私は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を使ってテストします。