11

特定のディレクトリからファイルを再帰的に削除したい。だから、私は使用しました

find . -wholename "*.txt" -delete

を使用してファイルを削除することもできます

rm -rf *.txt

rmと??を使用したファイルの削除の違いは何findですか??

4

3 に答える 3

9

find . -name abd.txt -deleteabd.txtのディレクトリツリーのどこかにある、指定されたすべてのファイルを削除しようとします.

find . -wholename abd.txt -deleteabd.txtのディレクトリ ツリー内のどこかにフル パス名を持つすべてのファイルを削除しようとします。.

そのようなファイルは決して存在しません: を使用すると、find .見つかったファイルのすべてのフルパス名が で始まる./ため、現在のディレクトリ内のファイルでさえabd.txtpath という名前になり./abd.txt、一致しません。

find . -wholename ./abd.txt -delete は、現在のディレクトリにある という名前のファイルを削除しますabd.txt

find -wholename ./abd.txt -delete同じことをします。

abd.txtが空でないディレクトリの場合、削除は失敗します。

(GNU find 4.6.0 で上記を試しました。他のバージョンでは動作が異なる場合があります。)

rm -rf abd.txtまた、現在のディレクトリで削除を試みabd.txtます。空でないディレクトリの場合は、そのディレクトリとその中のすべてを削除します。

でこれを行うにはfind、次を使用できます

find . -depth \( -wholename ./abd.txt -o -wholename ./abd.txt/\* \) -delete

于 2012-07-02T11:02:32.253 に答える
3

現在のディレクトリの下にあるすべてのファイルをfind -wholename GLOBPATTERN(深さに関係なく) 一致させようとしますが、コマンドで使用したグロブは、現在のディレクトリの直下(深さ 1) にrmあるファイルに対してのみ一致します。

ところで。ディレクトリを再帰的に削除したい場合-rを除いて、スイッチは必要ありません(拡張機能のため、通常のファイルのみを削除したいと思います)rm.txt

于 2012-07-02T12:47:40.160 に答える