Я хотів би видалити кожен файл, але зберігайте структуру папок. Чи є спосіб?
ПРИМІТКА: (Я використовую 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структура вже була охоплена, я не впевнений, що це цінний внесок як новий відповідь на це питання.