Подтвердить что ты не робот

Как вы рекурсивно удаляете все скрытые файлы в каталоге в UNIX?

Я искал какое-то время, но, похоже, не может получить сжатое решение. У меня есть Mac с папкой, которую я хочу очистить от всех скрытых файлов/каталогов - ничего скрытого. Раньше это было рабочее пространство Eclipse с большим количеством материалов .metadata/.svn, и я в порядке со всем удаляемым. Как я могу это сделать (с оболочкой script, Applescript и т.д.). Заранее большое спасибо!

4b9b3361

Ответ 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