Я хотел бы удалить каждый файл, но сохранить структуру папок. Есть ли способ?
ПРИМЕЧАНИЕ: (я использую 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 под названием: gnu находит и маскирует {} для некоторых оболочек - что? экранирование {}
с одиночными галочками ( '
) больше не требуется для современных оболочек типа 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 -type f -exec rm {} \;
Синтаксис: find (путь к файлу) -mtime (больше или меньше дней) -type f -exec rm {} \;
-type: указать тип файла "f" для каталога "d". -exec: выполнить команду rm: удалить {}: вывод команды find
Примечание. Проверьте его перед использованием. Пожалуйста, не стесняйтесь исправлять или обновлять, если я что-то пропустил.
find ... rm
структура уже была рассмотрена, я не уверен, что это ценный вклад в качестве нового ответа на этот вопрос.