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

504

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

Я набрал:

rmdir lampp

Эта ошибка возникает:

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

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

    
задан naveen 16.11.2012 в 05:37
источник

5 ответов

700

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

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 = объяснить, что делается
ответ дан Shantanu Banerjee 16.11.2012 в 06:19
источник
86
rm -R lampp

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

Рекомендуется всегда дважды проверять, в каком каталоге вы находитесь, и правильно ли вы вводили команду, прежде чем нажимать Enter.

Более безопасная версия

rm -R -i lampp

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

Примечание о -f :

Многие люди предлагают использовать -f (объединяя его в -Rf или -rf ), утверждая, что он избавляется от раздражающих подсказок. Однако в обычных случаях вам это не нужно, и использование этого параметра подавляет некоторые проблемы, о которых вы, возможно, do хотите узнать. Когда вы его используете, вы не будете предупреждены, если ваши аргументы предоставят несуществующий каталог или файл (ы): rm просто молча удалит что-либо. Как правило, сначала попробуйте без -f : если есть проблемы с вашими аргументами, то вы заметите. Если вы начнете получать слишком много подсказок о файлах без доступа на запись, вы можете попробовать его с помощью -f . Кроме того, запустите команду от пользователя (или суперпользователя, использующего sudo), который имеет полные разрешения для файлов и каталогов, которые вы удаляете, чтобы предотвратить эти запросы в первую очередь.

    
ответ дан thomasrutter 16.11.2012 в 05:56
21

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

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

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

    
ответ дан papseddy 16.11.2012 в 06:38
-2

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

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

$ sudo rm -R [Directory name]

Я успешно сделал это сегодня и удалил много непустых каталогов, которые я подтвердил, что мне не нужны / нужны.

Я использую 14.04 LTS

    
ответ дан Thomas 29.09.2014 в 01:00
-3

Кстати, я лично хотел удалить каталог, содержащий защищенный от записи файл / s (.git и подкаталоги), и в итоге понял, что мне также необходимо стать суперпользователем, чтобы успешно удалить эти файлы. Вот что я сделал:

#became super user
sudo su -

#deleted contents of, and then the directory, harvey_snake/
rm -R harvey_snake/
    
ответ дан Harvey Williams 17.09.2013 в 19:35