GNU findはディレクトリ内のファイルを削除しますが、ディレクトリ自体は保持します

GNU findはディレクトリ内のファイルを削除しますが、ディレクトリ自体は保持します

私は午後の大半をこのことを理解しようと費やしてきました。

答え1

現在のディレクトリの下の、名前をnode_modules保持したまますべてのファイルを削除するにはnode_modules:

find . -path  '*/node_modules/*' -delete

(これは GNU でテストされましたが、BSD/OSX でも同様に動作するfindと予想されます。)find

node_modulesいくつかのファイルを含むディレクトリを作成しましょう:

$ mkdir -p node_modules/dir{1..3}
$ touch node_modules/file{1..3}

ここで、このコマンドが返すファイルを見てみましょうfind

$ find . -path  '*/node_modules/*'
./node_modules/dir3
./node_modules/dir1
./node_modules/file3
./node_modules/file2
./node_modules/file1
./node_modules/dir2

これはファイルを表示します内部 node_modulesしかしないディレクトリnode_modules自体。したがって、次のコマンドでファイルを削除できます。

$ find . -path  '*/node_modules/*' -delete
$ ls
node_modules

関連情報