Как быстро удалить файлы и каталоги через терминал (оболочка bash)

Из окна терминала:
Когда я использую команду rm, она может удалять только файлы.
Когда я использую команду rmdir, удаляются только пустые папки.

Если у меня есть каталог с файлами и папками с файлами и папками в них и т.д., есть ли способ удалить все файлы и папки без жесткой настройки команды?

Если это имеет значение, я использую оболочку mac bash от терминала, а не от Microsoft DOS или linux.

Ответ 1

rm -rf some_dir

-r "рекурсивный" -f "force" (подавить подтверждающие сообщения)

Будьте осторожны!

Ответ 2

rm -rf *

Удалит все (папки и файлы) в текущем каталоге.

Но будьте осторожны! Выполняйте эту команду только в том случае, если вы абсолютно уверены, что находитесь в правильном каталоге.

Ответ 3

Да, есть. Опция -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.

Ответ 5

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

find -E . -regex './(dir1|dir2|dir3)' -and -type d -prune -o -print -exec rm -rf {} \;

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