Самое близкое, что я получил, это
# rm /path/to/directory/*.*
но это не работает для файлов, которые не имеют расширения ...
command-line
rm
user784637
источник
источник
shopt -s dotglob
перед запускомrm (...)
all files
;)*.*
означает все файлы, содержащие.
где-то в названии*a*
означает ноль или более символов, за которымиa
следует ноль или более символов. Это будет соответствовать имена файловhappy
,apple
,a
илиla
.Чтобы удалить папку со всем ее содержимым ( включая все внутренние папки ):
Чтобы удалить все содержимое папки ( включая все внутренние папки ), но не саму папку:
или же
если вы хотите убедиться, что скрытые файлы / каталоги также удалены.
Чтобы удалить все «файлы» из папки ( не удаляя внутренние папки ):
Предупреждение : если на вашем пути есть пробелы, всегда используйте кавычки.
эквивалентно 2 отдельным
rm -rf
вызовам:Чтобы избежать этой проблемы, вы можете использовать
'
одинарные кавычки'
( не расширяет переменные оболочки) или"
двойные кавычки"
( расширяет переменные оболочки):Где:
rm
- означает « удалить »-f
- означает « сила », которая полезна, когда вы не хотите, чтобы вас спрашивали / подсказывали, например, если вы хотите удалить архив.-r
- означает « рекурсивный », что означает, что вы хотите рекурсивно пройтись по каждой папке и удалить все.источник
rm -rf /path/to/directory/*
не удаляет скрытый файл в папке, например.htaccess
. Может бытьrm -rf /path/to/directory/.
? Не пробовал это.rm -rf /path/to/directory/.*
удаляет только скрытые файлы в указанном каталоге. Глядя на комментарий @ danjjl к ответу @ Rinzwind, чтобы также удалить скрытые файлы, запуститеshopt -s dotglob
перед запускомrm -rf /path/to/directory/*
.rm -rf /path/to/directory/.*
в моей системе вызвано удаление элементов в/path/to
. К счастью, я только что скопировал все свои данные на отдельный диск. Само собой разумеется, НЕrm -rf /path/to/directory/.*
вводите команду, если вы не сделали резервную копию всего своего компьютера в отдельном / безопасном месте!Чтобы удалить все файлы в каталоге (включая скрытые файлы и подкаталоги), выполните:
источник
./
и../
, но он все равно будет удалить скрытые файлы.rm -r $(pwd)/{*,.*}
Если вы хотите удалить только файлы в каталоге / path / to /, вы можете сделать
или же
Вы можете выполнять загрузку с помощью
find
, преимущество в том, что вы можете перечислить то, что найдено, не передавая его по трубопроводу,rm
чтобы вы могли видеть, что будет удалено перед началом работы.источник
GNU find
в качестве-delete
предиката. Если вы все еще хотите использовать-exec
, замена\;
с+
будет собиратьrm
вызовы вместе, повышая эффективность.Чтобы удалить все файлы и каталоги (включая скрытые ) в каталоге, вы можете попробовать следующее:
удалить папку, а затем воссоздать ее
использование
find
Здесь мы указываем
-mindepth 1
исключить сам каталог dir_name.Взгляните на следующую ссылку:
https://unix.stackexchange.com/questions/12593/how-to-remove-all-the-files-in-a-directory
источник
Если вы также хотите удалить все подкаталоги и сам каталог, вы можете использовать
rm -rf /path/to/directory
. Но всегда дважды проверяйте свою строку перед нажатием возврата, это такжеrm -rf
может вызвать много ошибок, например, если вы случайно вставили пробел после первой косой черты, имея права суперпользователя ...источник
Так как этот вопрос постоянно находится в топе Google, когда я ищу это сам:
Другие ответы страдают от разных проблем:
Некоторые из них включают в себя
.
и..
что шумно, сбивает с толку и раздражает.Некоторые из них забывают скрытые файлы (файлы, начинающиеся с точки).
Они не удаляются в правильном порядке (самый глубокий-первый), чтобы разрешить удаление каталога.
Они спускаются в другие (смонтированные) файловые системы, что часто нежелательно.
Их сложно правильно расширить с помощью дополнительных параметров (подробнее об этом ниже).
Итак, чтобы РЕКУРСИВНО удалить все файлы И папки в каталоге, сделайте следующее:
Обратите внимание, что я добавил
-xdev
аргумент, чтобы предотвратить спуск в горы (как/proc
и т. Д.).Почему нет
-depth
или-delete
?Несмотря на то, что за это меня постоянно опровергают люди, у этих методов есть и обратная сторона: не похоже, что они достаточно расширяемы, чтобы разрешить
-prune
подкаталог (не создавая больше проблем). В отличие от этого метода, вы можете вставитьперед
-mindepth
аргументом исключитьsubdir
из его содержимого.источник
-depth
флагfind
для этого.-delete
сfind
?-delete
в глубину Вы уже принимаете не POSIXfind
с-printf
, так что вы также можете использовать-delete
или-depth -print0 | xargs -0 rm
-not \( -path "$DIR/subdir" \)
... а мой работает? Почему?Вы можете
cd
войти в каталог и затем запустить команду,rm *.*
как в DOS, если вы помните.источник
Чтобы удалить текущий каталог, вы можете, например, использовать
rm -d ./*
-d указывает на удаление каталогов, а также.
источник