フォルダーから200 000個のファイル(すべて)を削除する必要があり、フォルダー自体を削除したくありません。
rmを使用すると、「引数リストが長すぎます」というエラーが表示されます。私はxargsで何かをしようとしましたが、私はShell Guyではないため、機能しません。
find -name * | xargs rm -f
$ find /path/to/folder -type f -delete
あなたはすべてを正しく行っています。問題があるのは'*'です(シェルはfind
ではなくファイルのリストに展開しています)。正しい構文は次のとおりです。
cd <your_directory>; find . -type f | xargs rm -f
find <your_directory> -type f | xargs rm -f
(後者はxargs
に長い名前を渡すため、少し効率が落ちますが、ほとんど気付かないでしょう:-))
または、このように'*'をエスケープすることもできます(ただし、この場合、「。」と「..」も削除されます。これは大きな問題ではありません-少しだけ取得します警告:-)):
find . -name '*' | xargs rm -f
find . -name "*" | xargs rm -f
find . -name \* | xargs rm -f
ファイル名にスペースが含まれている場合は、次のようにします。
find . -type f -print0 | xargs -0 rm -f
次のコマンドはcurrentディレクトリからすべてのファイルを削除します:
find . -type f -exec rm {} \;
あなたが試すことができます
find /path/to/folder -type f -print0 | xargs -0 rm -f
または
find /path/to/folder -type f -exec rm -f "{}" +
クオンタスの回答に対する称賛、ここにいくつかの追加があります。
特定の名前パターンのファイルを削除したい場合は、次のように書くことができます。 -printも追加されたので、ファイルが削除されているときに何が起こっているかを確認できます。
Sudo find /home/mydirectory -name "*.jpg" -type f -print -delete
たとえば、これはmydirectory内のすべてのjpegを削除します。