Я в папке /var/myfolder
.
Внутри есть несколько других папок, таких как: /var/myfolder/A/
/var/myfolder/B/
`/var/myfolder/C/
и т. Д.
Внутри каждого есть несколько файлов со случайными именами. Как удалить все файлы из всех папок внутри /var/myfolder
?
Структура (все каталоги, например, A, B, C и т. Д. Внутри /var/myfolder
) должна оставаться неизменной.
-type f
! =! -type d
В zsh используйте
.
спецификатор glob для сопоставления только обычных файлов:Это рекурсивно удаляет все (не скрытые) обычные файлы в текущем каталоге и его подкаталогах. Добавьте
D
спецификатор glob для удаления скрытых обычных файлов (и обычных файлов в скрытых каталогах).источник
Вы можете запустить
rm */*
в/var/myfolder
источник
rm
не удаляет каталоги - просто запустите его на всем.Чтобы сохранить символические ссылки на каталоги:
И я думаю, что это также должно работать, возможно, слегка оптимизированным способом, если в вышеуказанной версии есть много файлов, которые могут нуждаться в тестировании:
источник
find
имеет-xtype
опцию для этого.источник
Будет удалено все содержимое вложенных папок, не затрагивая сами вложенные папки.
Первым
*
для подкаталоговmyfolder
себя (A
,B
, ...). Второй*
для файлов вA
,B
и т.д.Если есть несколько папок внутри
A
,B
и т.д. Первый запуск:rm /var/myfolder/*/*/*
затем запуститьrm /var/myfolder/*/*
.источник
Вы также должны быть в состоянии перейти к началу рассматриваемого дерева каталогов, а затем выполнить:
и это должно удалить все файлы, оставляя дерево каталогов нетронутым. Опции -print0 и -0 могут быть опущены, если вы уверены, что у вас нет имен файлов или каталогов, содержащих пробелы.
Команда find различает файлы (-type f) и ссылки (-type l), так что это должно оставить ссылки без изменений, если таковые имеются. Не проверено, хотя. Если сомневаетесь, запустите:
и посмотрите, появится ли что-нибудь прежде, чем вы запустите предыдущую команду find
источник
rm
флаг-r, -R, --recursive - remove directories and their contents recursively
вписывается в это?Просто используйте команду ниже:
---------------- ИЛИ --------------------------------- -----------------------
«*» Обозначает все, поэтому, когда вы будете использовать *, удалит весь контент. Так что либо используйте команду, подобную этой, либо перейдите в каталог, в котором вы хотите удалить весь контент, и просто используйте следующую команду:
источник