У меня есть базовая папка (назовем ее базовой).
У меня внутри куча папок, разбросанных по разным глубинам внутри этих папок, это кеш-папки.
Я хочу удалить все файлы из папок кеша, но не сами папки.
Я пробовал
cd base
#then one of...
sudo rm -rf cache/*
sudo rm -rf *cache/*
sudo rm -rf cache*/*
sudo rm -rf *cache*/*
Но на самом деле я только догадываюсь, какой будет правильная команда?
Вы можете использовать чрезвычайно мощную команду поиска .
Я бы использовал что-то вроде этого:
find . -iname *cache* -ok rm -rf {} \;
Теперь позвольте мне объяснить это для вас , Find - это имя приложения, у него много опций, но вам не нужно много из них.
.
означает поиск в этом текущем каталоге. Это означает, что вы должны быть в правильном каталоге, чтобы начать с. Я предполагаю, что для вас ~
-iname
означает поиск в моем имени без учета регистра.
*cache*
означает, что имя должно содержать кеш.
Теперь важна следующая часть.
-ok
означает выполнять команды, которые следуют, но как я, если я хочу сделать это первым. Это можно заменить на -exec
, но я бы не советовал. Это могло бы удалить вещи, не сказав вам об этом, и вы этого не хотите.
Хорошо, поэтому следующая строка (это материал, который запускает -ok
): rm -rf {} \;
Надеюсь, rm -rf
говорит само за себя. {}
в основном является заполнителем для имени файла, который он нашел. \;
в конце означает, что это конец этой строки.
Надеюсь, это имеет смысл.
Я советую запускать команду find без всякого права, включая -ok
. Сначала он выкачает список всех файлов кэша, и вы можете просмотреть их. Затем добавьте раздел -ok
и получите взлом!
-iname
; это приведет к ошибкам, если в текущем каталоге будут файлы, соответствующие этому шаблону. Кроме того, этот подход удаляет также и каталоги кеша, а не только их содержимое. – geirha 9 July 2012 в 15:06