Как удалить все файлы из каталога?

164

Ближайший я получил

# rm /path/to/directory/*.*

, но это не работает для файлов, у которых нет расширения ...

    
задан user784637 06.09.2011 в 09:58
источник

10 ответов

188

Linux не использует расширения. Разработчик файла должен решить, хочет ли он, чтобы имя имело расширение. Linux смотрит на 1-й байт, чтобы выяснить, с каким файлом он работает.

Чтобы удалить все в каталоге, используйте:

rm /path/to/directory/*

Вы можете использовать параметр -r , чтобы удалить все каталоги внутри каталога, в котором вы удаляете содержимое. В противном случае появится сообщение об ошибке, указывающее, что он не удаляет каталог.

    
ответ дан Rinzwind 06.09.2011 в 10:06
источник
86
  • Чтобы удалить папку со всем ее содержимым (, включая все внутренние папки ):

    rm -rf /path/to/directory
    
  • Чтобы удалить все содержимое папки (, включая все внутренние папки ), но не сама папка:

    rm -rf /path/to/directory/*
    
  • Чтобы удалить все «файлы» изнутри папки ( не удаление внутренних папок ):

    rm -f /path/to/directory/*
    

Где:

  • rm - означает " удалить "
  • -f - означает « сила », что полезно, если вы не хотите, чтобы вас спросили / предложили, если вы хотите удалить архив, например.
  • -r - означает « рекурсивный », что означает, что вы хотите рекурсивно перейти в каждую папку и удалить все.
ответ дан Lilian A. Moraru 07.09.2011 в 19:26
19

Чтобы удалить все файлы в каталоге (включая скрытые файлы и подкаталоги):

rm -rf /path/to/directory/{*,.*}
    
ответ дан Leonid V. Fedorenchik 23.11.2014 в 10:38
5

Если вы также хотите удалить все подкаталоги и сам каталог, вы можете использовать rm -rf /path/to/directory . Но всегда проверяйте свою линию, прежде чем нажимать return, rm -rf также может вызвать много хавоков. если вы случайно вставляете пробел после первой косой черты при наличии прав суперпользователя ...

    
ответ дан Tobias Kienzler 07.09.2011 в 10:51
5

Если вы хотите удалить только файлы в каталоге / path / to /, вы можете сделать

find /path/to/directory -type f -print0| xargs -0 rm 

или

find /path/to/directory -type f -exec rm '{}' \;

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

    
ответ дан Richard Holloway 06.09.2011 в 14:13
2

Чтобы удалить все файлы и каталоги (включая скрытые ) в каталоге, вы можете попробовать следующее:

  • удалите папку, затем заново создайте ее

    rm -rf dir_name && mkdir dir_name
    
  • использовать find

    find dir_name -mindepth 1 -delete  
    

Здесь мы указываем -mindepth 1 для исключения самого каталога dir_name.
Взгляните на следующую ссылку:
Ссылка     

ответ дан zeekvfu 27.11.2013 в 17:05
0

Вы можете cd в каталог, а затем запустите команду rm *.* , как в DOS, если вы помните.

    
ответ дан V K Mavani 01.05.2013 в 02:59
0

Чтобы удалить текущий каталог, вы можете, например, использовать rm -d ./*

-d также сообщает об удалении каталогов.

    
ответ дан arviman 29.08.2017 в 09:17
-2

простой способ удалить все файлы из каталога

  1. просто перейдите в этот каталог в командной строке
  2. используйте команду

    rm 'ls'
    
ответ дан Ayush Shukla 27.05.2014 в 16:34
-3
rm -rf /path/to/directory/*

Это приведет к удалению всей директории. Если мы используем

rm -r /path/to/directory/*

он удалит только подкаталоги внутри каталога, и если мы будем использовать

rm /path/to/directory/*

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

    
ответ дан venkat patra 23.11.2014 в 07:29