Linuxサーバーで複数の行を持つファイルを削除する方法は? [閉鎖]

Linuxサーバーで複数の行を持つファイルを削除する方法は? [閉鎖]

特定のディレクトリにフルパスを含む多くのファイルのリストがあります。このディレクトリからファイルに1行(2行以上)を超えるファイルを削除しようとしています。

どうすればいいですか?

答え1

これを使用できます。実行する前に、まずecho代わりに試してくださいrm

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

答え2

この試み、

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"' _ '現在のディレクトリのファイルのみを削除します。

答え3

解決策awk

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

メモ:

  • この単純なバージョンは特殊文字をサポートしていません。
  • 重要なことは、行wc -l数ではなく改行文字の発生回数であることを覚えておいてください。したがって、2行のファイル(2行目にLFはありません)は「1」行を持つと報告されます。

関連情報