Как удалить файлы с более чем 1 строкой на сервере Linux? [закрыто]

-2
15.08.2018, 11:07
3 ответа

Вы можете использовать это. Прежде чем выполнять его, вы должны сначала попробовать echoвместо rm.

for i in dir/*; do
  lines=$(wc -l "$i")
  if test $lines -gt 1; then
    rm "$i"
  fi
done
2
28.01.2020, 05:14

Попробуйте это,

find. -type f -maxdepth 1 -exec bash -c '[[ $(wc -l < "$1") -gt 1 ]] && rm "$1"' _ '{}' \;
  • . -type f -maxdepth 1для поиска файлов в текущем каталоге
  • $(wc -l < "$1") -gt 1проверить, больше ли количество строк, чем 1
  • rm "$1"' _ 'удалять файлы только в текущем каталоге.
1
28.01.2020, 05:14

Решение awk:

wc -l /path/to/dir/* | head -n -1` | awk '$1>1 {print $2}' | xargs rm

Примечания:

  • В этой простой версии нет поддержки специальных символов
  • Помните, что wc -lсчитает не строки, а количество переводов строки. Таким образом, файл с двумя строками (, но без LF на второй ), будет сообщен как имеющий строку «1».
1
28.01.2020, 05:14

Теги

Похожие вопросы