LINUX.ORG.RU

Проблема при рекурсивном удалении по маске


0

0

Есть задача - почистить каталог и его подкаталоги от файла с заранее (не)известным именем. Для получения путей к файлам, которые надо удалить использована команла FIND:

$ rm $(find . -name «*.DS_Store»)

По логике всё понятно : получили путь и удалили (и так все найденые файлы удаляем), НО возврат команды find идёт без кавычек и как сделствие пробелы воспринимаются как разделитель имён при удалении. Вот и получается что если .DS_Store лежит в каталоге «a b c», то поиск вернёт ./a b c/.DS_Store, и rm попытается удалить это как:

rm "./a" «b» «c./.DS_Store»

Помогите решить задачку БЕЗ создания временного файла и его обработки.

★★

Последнее исправление: zzdnx (всего исправлений: 1)

find -exec

или же find -print0 | xargs -0 rm

proud_anon ★★★★★
()

Всем большое СПАСИБО!!! Которкое и простое решение. Первый и третий вариант подходят более, ибо второй затирает каталоги, которые могут случайно подойти под маску поиска.

zzdnx ★★
() автор топика
Ответ на: комментарий от zzdnx

для того, чтобы не затирались каталоги пишем ... -and -type f ...

annoynimous ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.