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

Я использую Ubuntu 14.04, а в терминале я стал root с sudo su, и я хотел удалить мусор root вручную. Он удалил все, за исключением нескольких файлов, начинающихся с точки. Например .htaccess и т. Д. Поэтому я пошел в этот каталог (который есть «файлы»), и я выполнил эту команду:

rm -rf .* 

Он удалил эти файлы, НО я также получил сообщение об ошибке, что система не могла удалить "." и ".." Что это значит? Например, если я попытался удалить все дерево каталогов? Как я уже сказал, когда я выполнял эту команду, я был в самом нижнем каталоге. Это, если быть точным: /root/.local/share/Trash/files/ Я сбил свой компьютер и включил его. На первый взгляд все кажется нормальным. Итак, теперь я хочу спросить, что пошло не так, и если то, что я сделал, действительно может нанести серьезный ущерб системе в целом? Другими словами, следует ли мне беспокоиться сейчас или все в порядке?

  • Проверьте, существует ли в каталоге несколько файлов
  • Как скопировать файлы изображений, имена которых не заканчиваются размером их разрешения?
  • Как найти конкретный файл с определенным набором строк?
  • В каком порядке цикл bash FOR IN захватывает файлы в папке?
  • Как включить несколько конфигурационных файлов в php-fpm?
  • Заменить слово на основе первых n символов
  • Как выбрать диапазон файлов с помощью частичного имени
  • для цикла в списках bash для точек и двухточечных папок
  • 3 Solutions collect form web for “Как удалить все файлы в текущем каталоге, начиная с точки?”

    .* соответствует всем файлам, имя которых начинается с . , Каждый каталог содержит файл . который относится к самому каталогу и к файлу, который называется .. который относится к родительскому каталогу. .* включает эти файлы.

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

    В zsh,. .* Не соответствует . или .. В bash вы можете установить

     GLOBIGNORE='.:..:*/.:*/..' 

    а затем * будет соответствовать всем файлам, включая файлы точек, но исключая . и ..

    Кроме того, вы можете использовать шаблон шаблона, который явно исключает . и .. :

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

    или

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

    Альтернативно, используйте find .

     find . -mindepth 1 -delete 

    Если вы хотите удалить все точечные файлы, соглашение должно использовать эту команду:

     rm .??* 

    Это приведет к удалению всех файлов, начинающихся с точки, содержащей по крайней мере два других символа, оставляя таким образом . и .. неповрежденный. Разумеется, он также пропустит имена файлов только с одной буквой после точки, но они должны быть редкими.

    Вы можете игнорировать ошибку для своих целей.

    Вы использовали подстановочный знак. Не путать с регулярным выражением. Вы сказали, что удалите все файлы, которые начинаются с. и не имеют ничего, или что-то после этого.

    Теперь ваше сообщение об ошибке связано с тем, что это будет включать . и .. . это ярлык для текущего каталога, а «..» – это ярлык для родительского каталога. (Технически они означают что-то другое, но для этого разговора это работает).

    Вы не можете удалить каталог, в котором вы сейчас находитесь, где бы вы не были? И вы не можете удалить родительский каталог, иначе, куда будет идти текущий каталог. Теперь это не совсем верно, вы можете удалить свой текущий каталог и родительский каталог, но инструменты (rm в этом случае) настроены, чтобы сделать его немного сложнее, потому что это немного интуитивно понятно.

    что пошло не так, и если то, что я сделал, действительно может нанести серьезный ущерб системе в целом?

    Основываясь на информации в вашем вопросе, я отвечаю: «Да, вы сделали что-то неправильно, и да, вы могли бы причинить серьезный серьезный ущерб вашей системе.

    Прежде всего вы запустили эту команду с повышенными привилегиями. Никогда НИКОГДА не делайте ничего рекурсивно с повышенными привилегиями, если вы уже не знаете результат. Вы, конечно, никогда не должны удалять НИЧЕГО с повышенными привилегиями, если вы точно не знаете, что делаете. В следующий раз используйте mv . Таким образом, если вы что-то испортите, вы можете просто вернуть его обратно.

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

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