Я могу использовать следующее, чтобы удалить целевой каталог и рекурсивно все его подкаталоги и содержимое.
find '/target/directory/' -type d -name '*' -print0 | xargs -0 rm -rf
Однако я не хочу, чтобы целевой каталог удалялся. Как я могу удалить только файлы в целевой папке, подкаталогах и их содержимом?
linux
macos
command-line
terminal
Майкл Прескотт
источник
источник
Еще три варианта.
Используйте
find
с-mindepth 1
и-delete
:2. Используйте
find
, но с файлами, а не каталогами. Это позволяет избежать необходимостиrm -rf
:3. Идите дальше и удалите родительский каталог, но создайте его заново. Вы можете создать функцию bash, чтобы сделать это с помощью одной команды; вот простой однострочник:
источник
Как насчет
Если могут быть файлы, начинающиеся с. в целевом каталоге.
Эта секунда будет соответствовать всему, начинающемуся с., Кроме. и .. Это не удастся для имен, как .a, но это не очень распространено. Это может быть изменено в случае необходимости, чтобы покрыть все случаи.
источник
источник