回答:
あなたはすべてを正しくやっています。問題を引き起こすのは'*'です(シェルは、それをの代わりにファイルのリストに展開します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
次のコマンドは、現在のディレクトリからすべてのファイルを削除します。
find . -type f -exec rm {} \;
-name '*'
「すべてのファイル」を意味するものではありません。ファイルは次のように言われます-type f
あなたが試すことができます
find /path/to/folder -type f -print0 | xargs -0 rm -f
または
find /path/to/folder -type f -exec rm -f "{}" +