Команда для рекурсивного удаления всех файлов и папок, в том числе скрытых, на Терминале MAC OS?

11

rm -rf * удалит все файлы и папки, но не скрытые.

rm -rf .* удалит все скрытые файлы и папки, но не те, которые не скрыты, правильно?

Какую команду следует ввести, чтобы удалить все файлы и папки, в том числе скрытые? (кроме. и ..); ?

MEM
источник

Ответы:

13
rm -rf * .*

сделает свое дело.

user1055604
источник
1
НЕТ! .*будет расширен до всех невидимых записей в текущем каталоге, включая .. - это означает, что использование .*в качестве аргумента для rm -rfбудет пытаться удалить каталог выше того, в котором вы находитесь в данный момент, и все его содержимое . Р.М. откажется это сделать, но я не считаю, что полагаться на этот сейф ...
Гордон Дэвиссон
@ Гордон Дэвиссон: я создал каталог. Я добавил файлы к нему, в том числе скрытые файлы. Я сделал эту команду. Он рекурсивно удалил все содержимое внутри этого каталога и не удалил никакого содержимого выше этого каталога. Можете ли вы уточнить ваш комментарий?
MEM
Спасибо за разъяснение вашего комментария выше. Теперь я понимаю вашу точку зрения. Любое альтернативное предложение тогда?
MEM
как насчет использования findс -deleteфлагом ...
user1055604
1
@GordonDavisson rmдолжен напечатать rm: "." and ".." may not be removedсообщение в этом случае - он не будет автоматически удалять родительский каталог.
slhck
1

Попробуй это:

find . -mindepth 1 -delete

Я не уверен, что -mindepthподдерживается всеми реализациями find; если у вас его нет, -pathследует дать другой способ, чтобы он не пытался удалить .:

find . -path "*/*" -delete
Гордон Дэвиссон
источник
У BSD findтоже есть такая возможность, да.
slhck
1

Просто используйте эту команду для очистки файлов / каталогов в соответствии с определенными критериями:

# tmpwatch -fauv 0 .
Антуан Нгуен
источник
0

shopt -s dotglobтакже делает *включаемые файлы, которые начинаются с точки.

LRI
источник