多くのファイルを含むフォルダ内の多くのファイルに対してrmを実行する方法

多くのファイルを含むフォルダ内の多くのファイルに対してrmを実行する方法

私はLinuxでいくつかの実験をしましたが、同じフォルダにたくさんのファイルがありました。今私がしようとしているとき

rm -f フォルダ/*.png

わかりました。

-bash: /bin/rm: パラメーターのリストが長すぎます。

この問題を克服する簡単な方法はありますか?


自分の仕事:

私の考えでは、rmの結果を繰り返す見苦しいスクリプトを作成できるようです。

ls /フォルダ/ |head-100 | grep ".*\.png"

しかし、実際にこれを行うより簡単なGnuメソッドが必要ですか?

答え1

私は次のことをします:

ls -1 | grep "\.png$" | xargs -L 50 rm -f 

で始まる項目のみを一致(および削除)します.png

答え2

rm -f folder/*.pngまたは、より簡単な方法では、rm *rm以外のシェルは*をすべての関連ファイルに拡張します。次に rm を呼び出し、すべてのファイル名を拡張します。 (たとえば、「rmファイル名1ファイル名2ファイル名3ファイル名4ファイル名5ファイル名6ファイル名7 ....ファイル名12345」の場合

リストが長すぎて通過できない場合、このエラーが発生します。

解決策:小さな塊に分割するか、ケーシングをスキップしてください。たとえば、--deleteを使用して検索を選択することをお勧めします。

  • find /path/to/file -name "*.PNG" -delete \;
  • find /path/to/file -name "*.PNG" -exec rm \;(各ファイルに対してrmを1回実行)
  • find /path/to/file -name "*.PNG" -delete + (rmに渡せるほど小さな塊に分けます)

最初のオプションは私がよく使うオプションです。まず、-printを使ってテストします。

関連情報