Как я удаляю все в каталоге?

Вид. Необходимо иметь дело с сортировкой себя, но comm может использоваться, чтобы сделать это, рассматривая каждую строку как элемент множества: -12 для пересечения, -13 для различия. (И -23 дает Вам зеркально отраженное различие, то есть, set2 - set1 вместо set1 - set2.) Объединение sort -u в этой установке.

25
15.12.2018, 23:55
8 ответов

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

find -delete 

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

17
27.01.2020, 19:40
  • 1
    Чтобы постараться не удалять каталог, использовать find /path -delete -mindepth 1. –  orodbhen 09.06.2017, 14:29
  • 2
    @orodbhen: найдите - удаляют, не удалит каталог, где Вы запускаете команду (как в вопросе с комнатой). –  user unknown 10.06.2017, 12:07

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

11
27.01.2020, 19:40
  • 1
    Таким образом, как это более легко. 'Будьте осторожны', не ответ. Я не понял бы, почему кто-то удаляет каталог и восстанавливает его снова. –  user unknown 21.03.2011, 05:36
  • 2
    я добавил фразу "как пустой каталог", возможно, это более ясно. –  Chris Quenelle 03.07.2013, 01:49
  • 3
    Нет, это не объясняет, почему Вы удаляете каталог и воссоздаете его затем. К вещам рассмотреть принадлежит, btw., дата/время создания также. –  user unknown 03.07.2013, 02:14
  • 4
    , Если тот каталог является текущим рабочим каталогом некоторого процесса, можно столкнуться с проблемами. Кроме того, при удалении каталога Вы удаляете информацию о ее полномочиях и владении. –   03.07.2013, 03:03
rm -rf -- * .[!.]* ..?*

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

Отметьте это .* соответствовал бы ...

8
27.01.2020, 19:40

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

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

иначе:

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

2
27.01.2020, 19:40

О, мой Zsh

rm -rf (.|)*

Снова, это для Zsh только.

2
27.01.2020, 19:40
  • 1
    Или *(D) ( D спецификатор шарика включает glob_dots опция для этого шаблона). –  Gilles 'SO- stop being evil' 28.01.2011, 22:14
  • 2
    Или rm -rf {.,}* (в отличие от удара, zsh не включает . и .. в {.,}*, по крайней мере, на моей машине). спасибо –  sasha 11.01.2017, 13:50

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

-2
27.01.2020, 19:40
  • 1
    Не в любой оболочке, о которой я знаю. –  Gilles 'SO- stop being evil' 28.01.2011, 00:45
  • 2
    , Вы корректны. это не делает удаляет подкаталоги. –  gladimdim 28.01.2011, 20:03
  • 3
    Проблема, более вероятно, будет этим *?* не будет соответствовать “точечным” файлам/директорам (если Вы не включили dotglob опция в ударе, GLOB_DOTS опция в zsh или эквивалент для любой оболочки Вы используете). –  Chris Johnsen 29.01.2011, 05:21

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

find . -type f -exec rm {} \;
1
27.01.2020, 19:40
  • 1
    там - удаляют переключатель, таким образом, можно удалить каталоги. (по крайней мере, в находке гну). –  user unknown 21.03.2011, 05:40
  • 2
    это не удалит подкаталоги –  sasha 11.01.2017, 13:43

Принятие удара 4 +:

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

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

5
27.01.2020, 19:40

Теги

Похожие вопросы