Знайдіть рекурсивно каталог і видаліть його


0

Я маю директорію db-cache-db і є їх з / под / / USER / public_html. Я знаю, що є спосіб написати сценарій до цього, але я не впевнений, де і як почати.

Я спробував наступне, але не пощастило

find /home -wholename 'db-cache-db' -exec echo "rm -rf" {} ';'

Чи потрібно використовувати -type і -name?

linux  bash  shell 

2
Так що ж вона зробила? Чи було це ехо, що ви просили?
Useless

2
Будьте обережні люди, які виконують цю команду, вона може бути небезпечною, якщо не правильно розгорнута!
fedorqui

Він не знайшов каталоги, щоб видалити їх

find -delete повинні працювати.
ignis

Відповіді:


3

-wholename є таким же, як -pathі відповідає повний шлях каталогу, наприклад, /home/{USER}/public_html/db-cache-db, а не тільки назва, напр. db-cache-db. Оскільки ви не використовуєте аргумент шаблону (наприклад, */db-cache-db ), ви ніколи не знайдете нічого.

Спершу спробуйте виконати наведені нижче дії, щоб переконатися, що ви не випадково видалить більше, ніж планували:

find /home -name 'db-cache-db' -type d

Якщо це призведе до каталогів, які потрібно видалити, додайте останній аргумент, який фактично видалено:

find /home -name 'db-cache-db' -type d -exec rm -rfv {} \;

2

Це не безпечно:

find /home -name 'db-cache-db' -type d -exec echo rm -rf {} ';'

Ви можете втратити багато каталогів, які ви хочете зберегти.

find /home -name 'db-cache-db' -exec echo "rm -rf" {} ';' > /home/tmp.shl

Далі прочитайте те, що в tmp.shl, переконайтеся, що все безпечно. Виконайте сценарій, який ви "написали" за допомогою find.

chmod +x /home/tmp.shl 
/home/tmp.shl

-exec echo є дуже безпечно, він просто друкує.
Daniel Beck

Оригінал не мав відлуння. FWIW.
jim mcnamara

Замість того, щоб використовувати -exec echo rm ... де можна випадково забути набрати echo, це не той самий ефект для тестування -print.
Kevin Fegan

@KevinFegan я використовував echo rm або подібні раніше, до покажіть мені команди що буде виконано. Якщо хотілося б лише назви файлів, -print достатньо.
Daniel Beck
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.