特定のディレクトリにフルパスを含む多くのファイルのリストがあります。このディレクトリからファイルに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」行を持つと報告されます。