Команда для удаления всех файлов из папок, соответствующих имени рекурсивно?

У меня есть базовая папка (назовем ее базовой).

У меня внутри куча папок, разбросанных по разным глубинам внутри этих папок, это кеш-папки.

Я хочу удалить все файлы из папок кеша, но не сами папки.

Я пробовал

cd base
#then one of...
sudo rm -rf cache/*
sudo rm -rf *cache/*
sudo rm -rf cache*/*
sudo rm -rf *cache*/*

Но на самом деле я только догадываюсь, какой будет правильная команда?

4
задан 9 July 2012 в 14:59

31 ответ

Вы можете использовать чрезвычайно мощную команду поиска .

Я бы использовал что-то вроде этого:

find . -iname *cache* -ok rm -rf {} \;

Теперь позвольте мне объяснить это для вас , Find - это имя приложения, у него много опций, но вам не нужно много из них.

. означает поиск в этом текущем каталоге. Это означает, что вы должны быть в правильном каталоге, чтобы начать с. Я предполагаю, что для вас ~

-iname означает поиск в моем имени без учета регистра.

*cache* означает, что имя должно содержать кеш.

Теперь важна следующая часть.

-ok означает выполнять команды, которые следуют, но как я, если я хочу сделать это первым. Это можно заменить на -exec, но я бы не советовал. Это могло бы удалить вещи, не сказав вам об этом, и вы этого не хотите.

Хорошо, поэтому следующая строка (это материал, который запускает -ok): rm -rf {} \;

Надеюсь, rm -rf говорит само за себя. {} в основном является заполнителем для имени файла, который он нашел. \; в конце означает, что это конец этой строки.

Надеюсь, это имеет смысл.

Я советую запускать команду find без всякого права, включая -ok. Сначала он выкачает список всех файлов кэша, и вы можете просмотреть их. Затем добавьте раздел -ok и получите взлом!

1
ответ дан 15 August 2018 в 18:39
  • 1
    Вы забыли процитировать шаблон для -iname; это приведет к ошибкам, если в текущем каталоге будут файлы, соответствующие этому шаблону. Кроме того, этот подход удаляет также и каталоги кеша, а не только их содержимое. – geirha 9 July 2012 в 15:06
  • 2
    Это удалит все папки с именем cache, включая файлы в них. ОП хочет удалить файлы в папках с именем cache, а не в самих папках – Flint 9 July 2012 в 15:18

Другие вопросы по тегам:

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