Я хотів би видалити кожен файл, але зберігайте структуру папок. Чи є спосіб?
ПРИМІТКА: (Я використовую GNU bash 4.1.5).
Я хотів би видалити кожен файл, але зберігайте структуру папок. Чи є спосіб?
ПРИМІТКА: (Я використовую GNU bash 4.1.5).
Відповіді:
Спробуйте це:
find . ! -type d -exec rm '{}' \;
Це видалить кожен окремий файл, крім каталогів, під поточним робочим каталогом. Будьте надзвичайно обережні з цією командою.
Якщо версія find
на вашому апараті підтримує його, ви також можете використовувати
find . ! -type d -delete
find
Команда ніколи не бачить лапки. Він просто розглядає {}
маркер як аргумент.
-exec command {} +
" і це " -exec command ;
". У \;
минулому я ніколи не використовував "{}".
Ви можете використовувати команду find
для пошуку кожного файлу, але підтримувати структуру каталогу:
$ find /some/dir -type f -exec rm {} +
Згідно з цим питанням Unix & Linux Q&A під назвою: gnu find and masking the {} для деяких оболонок - що? , втеча від {}
одинарних кліщів ( '
), здається, більше не потрібна для сучасних снарядів, таких як Bash.
Простий спосіб видалення кожного регулярного файлу з поточного каталогу та підкаталогів рекурсивно:
zsh -c 'rm **/*(.)'
Тільки zsh має кваліфікуючі класи для того, щоб відповідати файлам за типом. Однак rm
команда не працює в каталогах, тому в bash ви можете використовувати
shopt -s globstar
rm **/*
Це не працює для інших команд, крім того rm
. Загалом, ви можете використовувати find
:
find . -type f -delete
або якщо ваш find
не підтримує -delete
:
find . -type f -exec rm {} +
У мене була схожа вимога видалити файли з контуру та його підкаталогів (фільтруючи за часом) з видаленням структури каталогів.
І я використав формат нижче, який працював на мене.
find / test123 / home / test_file_hip / data / nfs -mtime +6 -тип f -exec rm {} \;
Syntex: знайти (шлях файлу) -mtime (більше або менше днів) -тип f -exec rm {} \;
-type: згадайте тип файлу "f" для каталогу "d" -exec: виконайте команду rm: delete {}: вихід команди пошуку
Примітка: перед тим, як користуватися, протестуйте його. Будь ласка, не соромтесь виправити або оновити, якщо я щось пропустив.
find ... rm
структура вже була охоплена, я не впевнений, що це цінний внесок як новий відповідь на це питання.