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

195
ipatch

Я провел большую часть дня, пытаясь выяснить это. У меня есть каталог, который содержит несколько каталогов проекта, и в каждом каталоге проекта есть node_modulesкаталог. Я хотел бы, чтобы удалить все файлы, скрытые включены в node_modulesкаталог, но держать в node_modulesкаталог, то есть. иметь node_modulesкаталог empy .

Я построил пару квази-решений, но, похоже, ни одно из них не сохраняет node_modulesкаталог. Я использую GNU findи grepна MacOS 10.12.x через доморощенный с рыбой оболочки.

1
Вы хотите удалить __only__ "скрытые" файлы (в Unix файл, имя которого начинается с `.` - это _hidden_) с` node_modules`, или вы хотите удалить _all_ файлы в `node_modules`? John1024 6 лет назад 0
@ John1024 ** все ** файлы в `node_modules` ipatch 6 лет назад 1

1 ответ на вопрос

2
John1024

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

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

(Это было протестировано с GNU, findно я ожидаю, что BSD / OSX findбудет вести себя аналогично.)

пример

Давайте создадим node_modulesкаталог с несколькими файлами в нем:

$ mkdir -p node_modules/dir $ touch node_modules/file 

Теперь давайте посмотрим, какие файлы 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 
спасибо, чувак, и, как указано выше в моем вопросе, я установил GNU `find` через homebrew. ipatch 6 лет назад 1

Похожие вопросы