Як видалити каталог та весь його вміст?


141

У баші все, що я знаю, це

rmdir directoryname

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

Відповіді:


216

Наступна команда зробить це за вас. Однак будьте обережні.

rm -rf directoryname

52
"-f" є "--force", який переосмислює деякі перевірки та обґрунтованість. Більш безпечною була б команда для початку rm -r directoryname.
Джим Париж

З якоїсь причини я отримую rm: invalid option -- rпомилку при спробі видалити каталог з rm -r <directoryname>.
Сонячний пісок

@Sunspawn Перевірте це пов’язане питання, щоб побачити, чи це так.
Марк.2377,

1
@JimParis Я думаю, що слово "безпечніше" є відносним. Припустимо, ви пишете сценарій для запуску на віддаленому комп’ютері. Цей скрипт має команду, яка повинна видалити каталог. Тут було б "безпечніше" використовувати rm -rf directorynamecoz, ви б не хотіли, щоб ваш сценарій призупиняв виконання, оскільки він чекає на введення користувачем. Звичайно, ви повинні бути впевнені, що видалення каталогу не принесе шкоди.
Джон Ред

7

якщо rm -rf directorynameви не вдається, спробуйте скористатися rm -R -f directoryname, або rm --recursive -f directoryname.

Якщо з цим не пощастило, слід розглянути можливість перевстановлення rm або комутації оболонок.


Це були варіанти, доступні на моїй сторінці rm man, я переглянув це, ввівши, man rmщоб переглянути мої параметри щодо рекурсивного видалення та параметрів сили .
saterHater

Ваш rmсписок чоловічої сторінки -r? Що це робить? (Спробуйте в каталозі, який ви створюєте лише для тестування, з ним є лише фіктивні файли (а може бути і підкаталоги).) Яку операційну систему ви використовуєте?
G-Man

PS Якщо rm -rне працює, це буде проблема ОС, а не проблема оболонки. (Строго кажучи, це буде проблема з версією rm, яку ви використовуєте, тому ви можете вирішити її, встановивши іншу версію rmабо пошукаючи свою систему, щоб побачити, чи є у вас вже інша версія rmв якомусь іншому каталозі, крім /bin.)
G-Man

Ага, правильно. Я забув згадати, що я перебуваю на Ubuntu 14.04. Коли я забіг man rmу свій термінал, він подав мені текстовий файл із lessпереглядачем тексту. Я прокручується знайшов відступом запис з усім , що мав -R і --recursive опції cozied вгору з -r варіант, що означає , що всі ці аргументи є ідентичними.
saterHater

1
редагувати: ви пробувалиsudo rm -r directoryName ? Неписані правила основних команд полягають у тому -r, що програма дозволить рекурсивно запускатись у кожному файлі вашої файлової системи (починаючи там, де вибираєте!), І що -f змушує робити це, навіть якщо це небезпечно . 'cd', 'mv', 'ls' здебільшого відповідає цьому принципу. ls -r /буде дузі, і cp -rf / /dev/nullзнищить усе у вашій файловій системі. <- Ніколи не виконуйте цю команду!
saterHater
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.