Как удалить папки с определенным именем
в Linux, как удалить папки с определенным именем, которые вложены глубоко в иерархии папок?
следующие пути находятся в папке, и я хотел бы удалить все папки с именем a.
1/2/3/a
1/2/3/b
10/20/30/a
10/20/30/b
100/200/300/a
100/200/300/b
какую команду Linux я должен использовать из родительской папки?
9 ответов:
если целевой каталог пуст, используйте find, filter with only Directory, filter by name, execute rmdir:
find -type d -name a -exec rmdir {} \;если вы хотите рекурсивно удалить его содержимое, заменять
-exec rmdir {} \;by-deleteили-prune -exec rm -rf {} \;. Другие ответы включают в себя подробную информацию об этих версиях, кредит их тоже.
используйте find для имени " a " и выполните rm, чтобы удалить те, которые названы в соответствии с вашими пожеланиями, следующим образом:
find . -name a -exec rm -rf {} \;сначала протестируйте его с помощью ls to list:
find . -name a -exec ls {} \;чтобы убедиться, что это удаляет только каталоги, а не простые файлы, используйте" - type d " arg (как предложено в комментариях):
find . -name a -type d -exec rm -rf {} \;"{} "является заменой для каждого найденного файла" a " - команда exec выполняется против каждого путем замены.
Это также работает - он удалит все папки под названием " a " и их содержимое:
rm -rf `find -type d -name a`
чтобы удалить все каталоги с именем
foo, run:find -type d -name foo -a -prune -exec rm -rf {} \;в других ответах отсутствует важная вещь:. Без
-prune, GNU find удалит каталог с соответствующим именем, а затем попытается рекурсировать в него, чтобы найти больше подходящих каталогов. Элемент-pruneопция говорит ему не рекурсировать в каталог, который соответствует условиям.
find ./ -name "FOLDERNAME" | xargs rm -Rfдолжен сделать трюк. Внимание, если вы случайно качаете a
.или/наxargs rm -Rfвесь ваш компьютер будет удален без возможности получить его обратно, требуя переустановки ОС.
у меня было более 100 файлов, таких как
log-12 log-123 log-34 ....выше ответы не работает для меня
но мне помогла следующая команда.
find . -name "log-*" -exec rm -rf {} \;Я
-typeкак.так он удаляет файлы и папки, которые начинаются сlog-и
rm -rfудаляет папки рекурсивно, даже если она имеет файлы.если вы хотите только папки
файлыfind -type d -name "log-*" -exec rm -rf {} \;find -type f -name "log-*" -exec rm -rf {} \;
другой:
"-exec rm -rf {} \;" can be replaced by "-delete" find -type d -name __pycache__ -delete # GNU find find . -type d -name __pycache__ -delete # POSIX find (e.g. Mac OS X)
я оказался здесь, чтобы удалить мой
node_modulesпапки перед выполнением резервного копирования моей работы с помощьюrsync. Ключевым требованием является то, чтоnode_modulesпапка может быть вложенной, так что вам нужно .сначала я запустил это, чтобы визуально проверить папки, которые будут удалены:
find -type d -name node_modules -pruneзатем я запустил это, чтобы удалить их все:
find -type d -name node_modules -prune -exec rm -rf {} \;благодаря pistache