Самое близкое, что я получил
# rm /path/to/directory/*.*
но это не работает для файлов, которые не имеют расширения ...
Самое близкое, что я получил
# rm /path/to/directory/*.*
но это не работает для файлов, которые не имеют расширения ...
Linux не использует расширения. Разработчик файла должен решить, хочет ли он, чтобы имя имело расширение. Linux смотрит на 1-й байт, чтобы выяснить, с каким файлом он работает.
Чтобы удалить все в каталоге, используйте:
rm /path/to/directory/*
Вы можете использовать -r
, например:
rm -r /path/to/directory/*
также удалять любые подкаталоги (вместе со всем их содержимым) внутри каталога, в котором вы удаляете содержимое. В противном случае появится сообщение об ошибке, указывающее, что он не удаляет каталог.
Удалять Папка со всем его содержимым (включая все внутренние папки):
rm -rf /path/to/directory
Чтобы удалить все содержимое папки(включая все внутренние папки), но не сама папка:
rm -rf /path/to/directory/*
или
rm -rf /path/to/directory/{*,.*}
если вы хотите убедиться, что скрытые файлы / каталоги также удалены.
Чтобы удалить все «файлы» изнутри папки (не удаление внутренних папок):
rm -f /path/to/directory/{*,.*}
Где:
rm
- означает "Удалить"-f
- означает "сила», что полезно, если вы не хотите, чтобы вас спросили / предложили, если вы хотите удалить архив, например.-r
- означает "рекурсивный«это означает, что вы хотите перейти рекурсивно вниз по каждой папке и удалить все.Чтобы удалить все файлы в каталоге (включая скрытые файлы и подкаталоги), выполните:
rm -rf /path/to/directory/{*,.*}
Если вы хотите удалить только файлы в каталоге / path / to /, вы можете сделать
find /path/to/directory -type f -print0| xargs -0 rm
или
find /path/to/directory -type f -exec rm '{}' \;
Вы можете делать нагрузки с помощью find
, преимущество состоит в том, что вы можете перечислить то, что найдено, rm
поэтому вы можете увидеть, что будет удалено до начала.
Если вы также хотите удалить все подкаталоги и сам каталог, вы можете использовать rm -rf /path/to/directory
, Но всегда проверяйте свою линию, прежде чем нажимать return, rm -rf
может также вызвать много хавоков, например. если вы случайно вставляете пробел после первой косой черты при наличии прав суперпользователя ...
Чтобы удалить все файлы и каталоги (включая скрытый ) в каталоге, вы можете попробовать следующее:
удалить папку, а затем воссоздать ее
rm -rf dir_name && mkdir dir_name
использование find
find dir_name -mindepth 1 -delete
Здесь мы указываем -mindepth 1
для исключения самого каталога dir_name.
Взгляните на следующую ссылку:
https://unix.stackexchange.com/questions/12593/how-to-remove-all-the-files-in-a-directory
Ты можешь cd
в каталог, а затем запустите команду rm *.*
как в DOS, если вы помните.
Чтобы удалить текущий каталог, вы можете, например, использовать rm -d ./*
-d также указывает удаление каталогов.
Поскольку этот вопрос постоянно находится на вершине Google, когда я сам это ищу:
Другие ответы страдают от различных проблем:
Некоторые из них включают .
а также ..
который является шумным, запутанным и раздражающим.
Некоторые из них забывают скрытые файлы (файлы, начинающиеся с точки).
Они не удаляются в правильном (в самом начале) порядке, чтобы разрешить удаление каталога.
Они спускаются в другие (смонтированные) файловые системы, что часто нежелательно.
Их трудно расширить с дополнительными параметрами (подробнее об этом ниже).
find "${DIR}" -xdev -mindepth 1 -printf "%d\t%y\t%p\0" | sort -z -r -n | cut -z -f3- | xargs -0 -r -- rm -d --
Обратите внимание, что я добавил -xdev
аргумент, чтобы предотвратить спуск в mounts (например, /proc
и т.д.).
-depth
или -delete
?Несмотря на то, что люди постоянно меня заворачивают, эти методы имеют недостаток: похоже, что они достаточно расширяемы, чтобы позволить -prune
в подкаталоге (без дополнительных проблем). В отличие от этого метода, вы можете вставить
-not \( -path "${DIR}/subdir" -prune \)
перед -mindepth
аргумент для исключения subdir
от его удаления.