Ответ 1
rm -rf some_dir
-r "рекурсивный" -f "force" (подавить подтверждающие сообщения)
Будьте осторожны!
Из окна терминала:
Когда я использую команду rm
, она может удалять только файлы.
Когда я использую команду rmdir
, удаляются только пустые папки.
Если у меня есть каталог с файлами и папками с файлами и папками в них и т.д., есть ли способ удалить все файлы и папки без жесткой настройки команды?
Если это имеет значение, я использую оболочку mac bash от терминала, а не от Microsoft DOS или linux.
rm -rf some_dir
-r "рекурсивный" -f "force" (подавить подтверждающие сообщения)
Будьте осторожны!
rm -rf *
Удалит все (папки и файлы) в текущем каталоге.
Но будьте осторожны! Выполняйте эту команду только в том случае, если вы абсолютно уверены, что находитесь в правильном каталоге.
Да, есть. Опция -r
сообщает rm
быть r ecursive и удаляет всю иерархию файлов, внедренную в ее аргументы; другими словами, если задан каталог, он удалит все его содержимое, а затем выполнит то, что эффективно является rmdir
.
Другими двумя параметрами, которые вы должны знать, являются -i
и -f
. -i
обозначает i nteractive; он заставляет rm
запрашивать перед удалением каждого файла. -f
означает f orce; он идет вперед и удаляет все, не спрашивая. -i
безопаснее, но -f
работает быстрее; используйте его, только если вы абсолютно уверены, что удаляете правильную вещь. Вы можете указать их с помощью -r
или нет; это независимая настройка.
И как обычно, вы можете комбинировать коммутаторы: rm -r -i
- это просто rm -ri
, а rm -r -f
- rm -rf
.
Также обратите внимание, что то, что вы изучаете, относится к bash
для каждой ОС Unix: OS X, Linux, FreeBSD и т.д. На самом деле синтаксис rm
одинаковый для каждой оболочки в каждой операционной системе Unix. OS X, под капотом, действительно является системой BSD Unix.
Использование rsync может быть быстрым
Итак, я искал все возможности для удаления всех файлов в каталоге, за исключением некоторых каталогов и файлов, которые я хотел сохранить. После долгих поисков я разработал способ сделать это, используя find.
find -E . -regex './(dir1|dir2|dir3)' -and -type d -prune -o -print -exec rm -rf {} \;
По существу он использует регулярное выражение для выбора каталогов для исключения из результатов, а затем удаляет оставшиеся файлы. Просто хотел поместить его здесь, если кому-то это понадобилось.