Як швидко видалити файли та каталоги через термінал (bash shell) [закрито]


331

З вікна терміналу:

Коли я використовую rmкоманду, вона може видаляти лише файли.
Коли я використовую rmdirкоманду, вона видаляє лише порожні папки.

Якщо у мене є каталог, вкладений з файлами та папками, в папках з файлами тощо, чи є можливість видалити всі файли та папки без усієї напруженої набору команд?

Якщо це має значення, я використовую оболонку mac bash з терміналу, а не Microsoft DOS або linux.


На випадок, якщо ви хочете відновити файли в майбутньому, не використовуйте "rm" для таких випадків. Використовуйте "rm-trash": github.com/nateshmbhat/rm-trash
Natesh bhat

Відповіді:


759
rm -rf some_dir

-r "рекурсивна" -f "сила" (придушити повідомлення підтвердження)

Будь обережний!


26
+1 і рада, що ви додали "Будьте уважні!" частина ... безумовно команда "Sawzall", яка може швидко перетворити добрий день у поганий .. якщо недбало володіти.
itsmatt

5
як не робите "# rm -rf /", ви пошкодуєте, що:
DarthVader

1
@itsmatt: Ви знаєте, що вони кажуть ... подаруйте комусь Sawzall, і раптом кожна проблема виглядає як години задоволення!
Джим Льюїс

164
На Mac? Зробіть це замість цього: brew install trashтоді trash -rf some_dirце перемістить небажаний каталог у ваш кошик, а не просто зникне в стилі Prestige -style. ( джерело )
zakdances

4
Підхід "сміття" чудовий!
анопрес

59
rm -rf *

Видалить усе (папки та файли) у поточному каталозі.

Але будьте обережні!Виконайте цю команду лише в тому випадку, якщо ви абсолютно впевнені, що ви знаходитесь у правильному каталозі.


17
rm -rf - це дуже ризикована команда, завжди слід бути обережним і вказувати папку, яку потрібно видалити.
eomeroff

8
Як щодо запуску ls -R *спочатку, щоб побачити, що буде видаленоrm -rf *
Хаммад Хан

Це добре працює для мене, дякую.
Моніка Хюбнер

14

Так, є. -rОпція вказує rm, що г 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синтаксис «s це ж в значній мірі кожної оболонки на кожній ОС Unix. OS X, під капотом, справді є системою BSD Unix.


1
Хоча всі згадані вище варіанти є стандартними серед усіх перерахованих ароматів Unix, є і деякі відмінності. Наприклад, ОС X (але не Linux) має "rm -d", яка видаляє або файли, або порожні каталоги. Все-таки +1 для точки, що OS X є BSD всередині.
Девід Гелхар

Щоправда --- підмножина POSIX гарантує стабільну роботу в Unixen, але все, що знаходиться поза цим, може і не може.
Antal Spector-Zabusky

2

Тому я шукав у всьому напрямку спосіб видалити всі файли в каталозі, за винятком деяких каталогів та файлів, які я хотів зберегти. Після довгого пошуку я придумав спосіб це зробити за допомогою пошуку.

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

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.