Как удалить все в каталоге?

Прошу прощения за такой основной вопрос:

Как удалить все в каталоге, включая скрытые файлы и каталоги?

  • Сообщение об ошибке на терминале, несмотря на использование символа 2>
  • Rm -rf * рекурсивно удаляет файлы из текущего каталога или родительского / корневого каталога?
  • Будет ли «*» (звезда) в globbing соответствовать только символам (т. Е. Az и 0-9)?
  • Расширение параметров для нескольких переменных
  • Создание каталога, защищенного от 'rm -rf'
  • Что делает `<& -` делать?
  • Сейчас я использую следующее:

    rm -rf * rm -rf .* 

  • Как я могу обрабатывать необработанные двоичные данные в трубе bash?
  • Эквивалент «который» в sh
  • Является ли это перенаправление на / dev / null?
  • Извлечение каталога из stdout из wget
  • Undeletable directory
  • Двойная проверка rm в zsh
  • 8 Solutions collect form web for “Как удалить все в каталоге?”

    Простой и прямой:

     find -delete 

    Включает в себя каталоги и скрытые файлы. По крайней мере, gnu-find знает -delete , ваша find может отличаться.

    Лучший ответ: не делайте этого. Рекурсивно удалите сам каталог, а затем создайте его как пустой каталог. Для других людей более надежно и проще понять, что вы пытаетесь сделать. Когда вы заново создаете каталог, у него может быть другой владелец, группа и разрешения. Если это важно, будьте осторожны. Кроме того, если у каких-либо запущенных программ есть открытые дескрипторы файлов (дескрипторы) в каталоге, вы не захотите их удалить. Если ни один из этих особых случаев не применяется, то проще удалить весь каталог.

     rm -rf -- * .[!.]* ..?* 

    Каждый из трех шаблонов расширяется до самого себя, если он ничего не соответствует, но это не проблема, потому что мы хотим сопоставить все, а rm -f игнорирует несуществующие аргументы.

    Обратите внимание, что .* Будет соответствовать ..

    Предполагая bash 4+:

     shopt -s dotglob rm -rf -- * ##or: rm -rf ./* 

    С включенным dotglob * расширяется до всех файлов и каталогов, даже с тех, которые начинаются с . – но не расширяется . и .. , поэтому безопасно использовать с rm .

    если вы находитесь в каталоге:

    cd .. && rm -rf dir && mkdir dir && cd dir

    в противном случае:

    rm -rf /path/to/dir && mkdir /path/to/dir

    О, мой Zsh

     rm -rf (.|)* 

    Опять же, это только для Zsh.

    Как насчет использования find . Я думаю, что это, как правило, хороший выбор, когда вам приходится копаться в подкаталогах.

     find . -type f -exec rm {} \; 

    Попробуйте rm -rf *?* . Это приведет к удалению нормальных и скрытых файлов.

    Linux и Unix - лучшая ОС в мире.