Як видалити все в каталозі, включаючи приховані файли та каталоги?
Зараз я використовую наступне:
rm -rf *
rm -rf .*
rm -rf yourdirectory/*
..
каталогу, який видалить все, що знаходиться в каталозі вище .
Як видалити все в каталозі, включаючи приховані файли та каталоги?
Зараз я використовую наступне:
rm -rf *
rm -rf .*
rm -rf yourdirectory/*
..
каталогу, який видалить все, що знаходиться в каталозі вище .
Відповіді:
Простий і прямий вперед:
find -delete
Включає каталоги та приховані файли. Принаймні gnu-find знає -delete
, ваші find
можуть відрізнятися.
find /path -delete -mindepth 1
.
Найкраща відповідь: Не робіть цього. Рекурсивно видаліть сам каталог, а потім відтворіть його як порожній каталог. Іншим людям надійніше і простіше зрозуміти, що ви намагаєтеся зробити. При повторному створенні каталогу він може мати іншого власника, групу та дозволи. Якщо це важливо, будьте обережні. Крім того, якщо будь-які запущені програми мають в каталозі ручки відкритих файлів (дескриптори), ви не хочете їх видаляти. Якщо жоден із цих особливих випадків не застосовується, тоді простіше видалити весь каталог.
rm -rf -- * .[!.]* ..?*
Кожен з трьох шаблонів розширюється до себе, якщо він нічого не відповідає, але це тут не проблема, оскільки ми хочемо зіставити все і rm -f
ігнорувати неіснуючі аргументи.
Зауважте, що .*
це відповідало б..
.
якщо ви знаходитесь в каталозі:
cd .. && rm -rf dir && mkdir dir && cd dir
інакше:
rm -rf /path/to/dir && mkdir /path/to/dir
О мій Зш
rm -rf (.|)*
Знову ж таки, це лише для Zsh.
*(D)
( D
класифікатор глобу вмикає glob_dots
опцію для цього шаблону).
rm -rf {.,}*
( в відміну від Баша, ЗШ не включає в себе .
і ..
в {.,}*
, по крайней мере , на моїй машині).
Як щодо використання find
. Я думаю, що це, як правило, хороший вибір, коли вам доведеться копатись під підкаталогами.
find . -type f -exec rm {} \;
Спробуйте rm -rf *?*
. Це видалить звичайні та приховані файли.
*?*
вони не збігаються з "крапковими" файлами / dirs (якщо ви не включили dotglob
опцію в bash , GLOB_DOTS
опцію в zsh або еквівалент для будь-якої оболонки, яку ви використовуєте).
rm -rf .* *
.