Як видалити не порожній каталог у Терміналі?


630

Як видалити наступний каталог?

Я набрав:

rmdir lampp

Ця помилка з'являється:

rmdir: failed to remove `lampp': Directory not empty

Чи є команда видалити всі файли в каталозі та видалити папку каталогу?


1
Я не можу видалити каталог типу "Нова папка", використовуючи всі описані вище команди. Це подвійне слово. Але я хочу видалити цей каталог. Будь-які пропозиції будуть вітатися. T.Divakara, Бенгалуру, Індія

Порожній пробіл у назві файлу, спробуйте скористатися 'quotes'> rmdir 'New Folder' <тоді папка вимкнеться або використовуйте символи втечі для невидимих ​​символів.
Кен Моллеруп

2
Просто робити rm -r lamppце зроблять.
Джон Строд

Відповіді:


876

Скористайтеся командою нижче:

rm -rf lampp

Він видаляє всі файли та папки, що містяться в lamppкаталозі.

У випадку, якщо користувач не має дозволу на видалення папки:

Додайте sudoна початку команди:

sudo rm -rf folderName

В іншому випадку без sudoповернення вам буде відмовлено в дозволі. І це гарна практика, намагаючись не використовувати -fпід час видалення каталогу:

sudo rm -r folderName

Примітка. Це передбачає, що ви вже на тому самому рівні папки, яку ви хочете видалити в терміналі, якщо ні:

sudo rm -r /path/to/folderName

FYI: Ви можете використовувати літери -f, -r, -v:

  • -f = ігнорувати неіснуючі файли, ніколи не підказуючи
  • -r = видаляти каталоги та їх вміст рекурсивно
  • -v = пояснити, що робиться

69
На мою скромну думку, хороша практика ніколи не додавати "f" з першої спроби. Його мета - ігнорувати певні підказки попередження, які можуть бути важливими, особливо якщо ви випадково зробили це в / з неправильного каталогу. На мою думку, добре спершу спробувати без "f", тоді лише якщо у вас виникло багато попереджувальних підказок і ви впевнені, що це нормально, щоб ігнорувати їх усі, Ctrl + C з нього та повторити команду з " f ".
thomasrutter


@thomasrutter ... Погодьтеся. Власник файлу "xxx": root та group: root можна видалити за допомогою перемикача -f ; і без судо . Це повідомлення без -f : " rm: видалити звичайний файл, захищений від запису" /home/william/.cache/netbeans/v08.01/tmp/xxx '? _ ". _Прибіть обережно.
буде

95
rm -R lampp

Однак вам потрібно бути обережними з такою рекурсивною командою, оскільки легко випадково видалити набагато більше, ніж ви задумали.

Доцільно завжди двічі перевірити, в якому каталозі ви перебуваєте, і чи правильно ви ввели команду, перш ніж натиснути клавішу Enter.

Більш безпечна версія

rm -R -i lampp

Додавання -iробить це трохи безпечнішим, оскільки підкаже вам про кожне видалення. Однак якщо ви видаляєте багато файлів, це не буде дуже практичним. Тим не менш, ви можете спробувати це спочатку.

Примітка про -f варіант:

Багато людей пропонують використовувати -f(поєднуючи його в -Rfабо -rf), стверджуючи, що він позбавляється від дратівливих підказок. Однак у звичайних випадках він вам не потрібен, а його використання пригнічує деякі проблеми, про які ви, мабуть , хочете знати. Використовуючи його, ви не будете попереджені, якщо ваші аргументи надають неіснуючий каталог або файл (и): rm просто мовчки не зможе нічого видалити. Як правило, спробуйте спочатку без цього -f: якщо є проблеми з вашими аргументами, то ви помітите. Якщо ви почнете отримувати занадто багато підказок про файли без доступу до запису, ви можете спробувати це-f. Крім того, запустіть команду від користувача (або суперкористувача, що використовує sudo), який має повні дозволи на файли та каталоги, які ви видаляєте, щоб запобігти цим підказкам в першу чергу.


4
Примітка: малі регістри теж -rможуть бути використані і мають такий же ефект. Я, як правило, використовую лише великі регістри, -Rоскільки це відповідає іншим командам, які я використовую, наприклад, grepта chmod, деякі з яких підтримують лише великі регістри.
thomasrutter

Цей для мене працював за допомогою adb (android debug bridge) на Android. Спробував rm -rf, але не вийшло. Довелося використовувати rm -R. Дякую.
raddevus

Це хороше рішення, особливо якщо недосвідчений у використанні терміналу Bash. Команду можна скоротити до rm -ir FOLDER.
AlainD

24

Існує маса способів видалення каталогу через режим CLI. Це залежить від того, яким чином вам подобається.

rm -rvf /path/to/directory  
  • -r = видаляти каталоги та їх вміст рекурсивно
  • -v = поясніть, що робиться
  • -f = ігноруйте неіснуючі файли, ніколи не підказуйте

Якщо ви новачок в Linux, використовуйте довідкові сторінки команд ( man rm) для більшої опції та більшої точності.


-2

У мене були проблеми з цим сьогодні, але я подолав це з судо.

Caveat: Будьте впевнені, що хочете видалити всю справу, перш ніж використовувати команду нижче.

$ sudo rm -R [Directory name]

Я успішно зробив це сьогодні і видалив багато непорожніх каталогів, за якими я підтвердив, що не хочу / не потребую.

Я використовую 14,04 LTS


4
"SUDO" не є командою - "sudo" є. Тим не менш, ви не використовуєте sudo для видалення не порожнього каталогу, ви використовуєте його для видалення файлу, який не належить вам. Зробити це звичайно небезпечно і не дуже розумно, оскільки ви не повинні сліпо видаляти файли, якими ви не володієте.
Марті Фрід

-3

До речі, я особисто хотів видалити каталог, що містить захищений від запису файл / s (.git та підкаталоги), і, врешті-решт, зрозумів, що мені також потрібно стати супер користувачем, щоб успішно видалити ці файли. Ось що я зробив:

#became super user
sudo su -

#deleted contents of, and then the directory, harvey_snake/
rm -R harvey_snake/

4
Я не думаю, що вам sudo suтут потрібно . Просто додайте rmкоманду до sudo. Для безпеки - це добра практика (на думку прихильників судо) не залишатися в кореневому підказці, коли це не потрібно.
thomasrutter

2
Крім того, будьте дуже впевнені, в якому каталозі ви знаходитесь, якщо є sudo rm -r.
Тоні Мартін

Ви можете зробити команду root-rela ( /directory_name), щоб не було сумнівів у тому, який каталог ви видаляєте.
Яков Айнспан
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.