Я искал какое-то время, но, похоже, не может получить сжатое решение. У меня есть Mac с папкой, которую я хочу очистить от всех скрытых файлов/каталогов - ничего скрытого. Раньше это было рабочее пространство Eclipse с большим количеством материалов .metadata/.svn, и я в порядке со всем удаляемым. Как я могу это сделать (с оболочкой script, Applescript и т.д.). Заранее большое спасибо!
Как вы рекурсивно удаляете все скрытые файлы в каталоге в UNIX?
Ответ 1
find . -name ".*" -print
Я не знаю MAC OS, но так вы находите их в большинстве средах * nix.
find . -name ".*" -exec rm -rf {} \;
чтобы избавиться от них... выполните первое обнаружение и убедитесь, что список - это то, что вы хотите, прежде чем удалять их все.
Первый "."
означает из вашего текущего каталога. Также обратите внимание, что второй ".*"
можно изменить на ".svn*"
или любое другое более конкретное имя; синтаксис выше просто находит все скрытые файлы, но вы можете быть более избирательным. Я использую это все время, чтобы удалить все каталоги .svn в старом коде.
Ответ 2
Вам нужно быть очень внимательным и проверять любые команды, которые вы используете, поскольку вы, вероятно, не хотите удалять текущий каталог (.
), родительский каталог (..
) или все файлы.
Это должно включать только файлы и каталоги, начинающиеся с точки и исключающие .
и ..
.
find . -mindepth 1 -name '.*' -delete
Ответ 3
rm -rf `find . -type f -regex '.*/\.+.+'`
Если вы хотите удалить каталоги, измените -type f
на type -d
.
Если вы хотите удалить файлы и каталоги, удалите type -f
Ответ 4
find /path -iname ".*" -type f -delete ;
Рубин (1.9 +)
ruby -rfileutils -e 'Dir["**/.*"].each{|x| FileUtils.rm(x) if File.file?(x)}'
Ответ 5
Я использую эту команду для удаления пустых каталогов. Он начинается снизу и прокладывает себе путь к вершине. Таким образом, это не будет не сбой, если вы ссылаетесь на текущий путь.
find . -depth -type d -empty -exec rmdir {} \;
Ответ 6
Я нашел, что это работает достаточно хорошо (в Bash на Linux по крайней мере):
find . -wholename '*/.*' -type f | sed -n '/\/\.[^\/]\+$/p' | xargs rm
Вы можете настроить регулярное выражение в вызове sed
по своему усмотрению.
Будьте осторожны: в моем случае у меня есть много скрытых файлов с именем .gitignore
или .gitkeep
, которые должны быть сохранены. Обязательно проверьте список, чтобы увидеть, есть ли там что-то, что вы хотите сохранить.
Я нашел этот вариант весьма полезным, он удаляет такие файлы, как ._ANYTHING
(часто обрезанные или tmp файлы):
find . -wholename '*/.*' -type f | sed -n '/\/\._[^\/]\+$/p' | xargs rm