Удаление каталогов с пробелами с помощью bash - PullRequest
1 голос
/ 08 января 2009

Я использую следующую команду для удаления всех каталогов «.dummy» в папке с именем «Test Folder»:

rm -rf `find "Test Folder" -type d -name .dummy`

Однако, это не работает, так как расширяется до, скажем:

rm -rf Test Folder/.dummy

Поскольку пробельные символы не экранированы, происходит сбой.

Я тоже пробовал что-то вроде этого:

find "Test Folder" -type d -name .dummy -exec rm -rf {} \;

Это работает, но выдает досадную ошибку, подобную этой:

find: Test Folder/.dummy: No such file or directory

Есть ли способ заставить любое решение добиться успеха?

Ответы [ 3 ]

9 голосов
/ 08 января 2009

Пара вещей. Проще всего поменять и использовать

$ find 'Test Folder' -type d -print0 | xargs -0 rm -rf

Другой выбор

$ find 'Test Folder' -type d -exec \'{}\' \;
2 голосов
/ 08 января 2009

Попробуйте

find "Test Folder" -type d -name .dummy -exec rm -rf \"{}\" \;

Обратите внимание на дополнительные кавычки в аргументе rm -rf "{}" для опции -exec. Они необходимы, потому что имя Test Folder/.dummy содержит пробел. Так что вам нужны кавычки.

1 голос
/ 18 апреля 2009

найти "Тестовую папку" -типа d -name '.dummy' -delete

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...