GNU find удаляет файлы в каталоге, но сохраняет сам каталог

GNU find удаляет файлы в каталоге, но сохраняет сам каталог

Я потратил большую часть дня, пытаясь разобраться в этом.

решение1

Чтобы удалить все файлы в любом каталоге, который находится в текущем и имеет имя , node_modulesсохранив node_modules:

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

(Это было протестировано с GNU find, но я ожидаю, что BSD/OSX 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

Связанный контент