Как удалить все в каталоге, включая скрытые файлы и каталоги?
Прямо сейчас я использую следующее:
rm -rf *
rm -rf .*
rm -rf yourdirectory/*
..
каталогу, который удалит все, что находится в каталоге выше .
Как удалить все в каталоге, включая скрытые файлы и каталоги?
Прямо сейчас я использую следующее:
rm -rf *
rm -rf .*
rm -rf yourdirectory/*
..
каталогу, который удалит все, что находится в каталоге выше .
Ответы:
Просто и прямо:
find -delete
Включает каталоги и скрытые файлы. По крайней мере, гну-найти знает -delete
, ваш find
может отличаться.
find /path -delete -mindepth 1
.
Лучший ответ: не делай этого. Рекурсивно удалите сам каталог, а затем воссоздайте его как пустой каталог. Другим людям легче и проще понять, что вы пытаетесь сделать. При повторном создании каталога он может иметь другого владельца, группу и разрешения. Если это важно, будьте осторожны. Кроме того, если какие-либо работающие программы имеют открытые файловые дескрипторы (дескрипторы) в каталоге, вы не захотите его удалять. Если ни один из этих особых случаев не применим, тогда проще удалить весь каталог.
rm -rf -- * .[!.]* ..?*
Каждый из трех шаблонов расширяется до самого себя, если он ничего не соответствует, но это не проблема, поскольку мы хотим сопоставить все и rm -f
игнорировать несуществующие аргументы.
Обратите внимание, что .*
будет соответствовать..
.
если вы находитесь в каталоге:
cd .. && rm -rf dir && mkdir dir && cd dir
иначе:
rm -rf /path/to/dir && mkdir /path/to/dir
Боже мой
rm -rf (.|)*
Опять же, это только для Zsh.
*(D)
( D
спецификатор glob включает glob_dots
опцию для этого шаблона).
rm -rf {.,}*
( в отличие от Баша, ЗШ не включает в себя .
и ..
в {.,}*
, по крайней мере , на моей машине).
Как насчет использования find
. Я думаю, что в целом это хороший выбор, когда нужно копаться в подкаталогах.
find . -type f -exec rm {} \;
Попробуй rm -rf *?*
. Это удалит нормальные и скрытые файлы.
*?*
они не будут соответствовать «точечным» файлам / каталогам (если вы не включили dotglob
опцию в bash , GLOB_DOTS
опцию в zsh или эквивалент для любой используемой вами оболочки).
rm -rf .* *
.