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


11

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

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

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

Ответы:


13
rm -rf * .*

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


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также делает *включаемые файлы, которые начинаются с точки.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.