Как удалить непустую директорию в Терминале?

631

Как мне удалить следующий каталог?

Я набрал:

rmdir lampp

Эта ошибка появляется:

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

Есть ли команда удалить все файлы в каталоге и удалить папку каталога?

Нэвин
источник
1
Я не могу удалить каталог, такой как «Новая папка», используя все приведенные выше подробные команды. Это в двух словах. Но я хочу удалить этот каталог. Любые предложения будут приветствоваться. Т.Дивакара, Бангалор, Индия
Это пустое место в имени файла, попробуйте использовать 'quotes'> rmdir 'New Folder' <затем папка исчезнет, ​​или используйте escape-символы для невидимых символов.
Кен Моллеруп,
2
Просто делать rm -r lamppбудет делать.
Джон Строуд

Ответы:

878

Используйте следующую команду:

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 и повторить команду с «». е».
Томасруттер
@BKSpurgeon нет, если вы --no-preserve-rootтоже не печатаете случайно .
Муру
@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), у которого есть полные права доступа к удаляемым файлам и каталогам, чтобы в первую очередь предотвратить появление этих запросов.

thomasrutter
источник
4
Примечание: строчные буквы также -rмогут быть использованы и имеют тот же эффект здесь. Я обычно использую только заглавные буквы, -Rпотому что это согласуется с другими командами, которые я использую, такими как grepи chmod, некоторые из которых поддерживают только заглавную форму.
Томасруттер
Этот работал для меня, используя adb (android debug bridge) на Android. Попытка rm -rf, но это не сработало. Пришлось использовать rm -R. Благодарю.
Раддевус
Это хорошее решение, особенно если вы не имеете опыта использования терминала Bash. Команда может быть сокращена до rm -ir FOLDER.
AlainD
24

Есть много способов удалить каталог через режим CLI. Это зависит от того, как вы себя чувствуете.

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

Если вы новичок в Linux, используйте man-страницы command ( man rm) для большей опции и большей точности.

papseddy
источник
-2

У меня были некоторые проблемы с этим сегодня, но я преодолел это с помощью sudo.

Предостережение: будьте уверены, что вы хотите удалить всю вещь, прежде чем использовать команду ниже.

$ 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. В целях безопасности рекомендуется (по мнению сторонников sudo) не оставаться в корневом запросе, когда в этом нет необходимости.
Томасруттер
2
Кроме того, будьте очень, очень, очень уверены, в каком каталоге вы находитесь, если вы sudo rm -r.
Тони Мартин
Вы можете сделать команду root -lative ( /directory_name), чтобы не было сомнений в том, какой каталог вы удаляете.
Яаков Айнспан