LINUX.ORG.RU

Поиск в подкаталогах по маске


0

0

Проблема в следующем. Мне нужно просканировать каталог который содержит десятки подкаталогов и найти в нем файлы с расширением .db удалив их. Я делаю следующее $rm `find mycatalog -name ".db"` однако - эта команда действительна если каталоги и файлы имеют имя в одну строку латиницей. Если же файл ил каталог или файл имеет имя например "мои документы" то эта команда не пашет (нужно эскейпить) как все это дело реализовать командой. Подскажите пожалуйста как задать команду чтоб все автоматически эскейпилость независимо от имени?

Re: Поиск в подкаталогах по маске

   ACTIONS
       -delete
              Delete  files; true if removal succeeded.  If the removal failed,
              an error message is issued.  Use  of  this  action  automatically
              turns on the ’-depth’ option.

sin_a ★★★★★ ()

Re: Поиск в подкаталогах по маске

Нинада ничо эскейпить. Пользуйся ключем -exec. В твоем случае команда будет выглядеть так

find mycatalog -name ".db" -exec rm -f {} \;

где вместо "{}" будет подставляться имя текущего найденного файла. А конструкция "\;" нужна как терминирующий символ чтоб дальше парсинг команды не шел.

xintrea ()

Re: Поиск в подкаталогах по маске

find /the/path -type f -name '*.db' -print0 | \
xargs --null --no-run-if-empty rm -f

Dselect ★★★ ()
Ответ на: Re: Поиск в подкаталогах по маске от Dselect

Re: Поиск в подкаталогах по маске

> На каждый файл процесс порождать некультурно. Даже несмотря на то, что fork() в Linux очень быстрый.

Да и побоку, зато синтаксис команды более-менее понятен, не то что костыль xargs.

xintrea ()
Ответ на: Re: Поиск в подкаталогах по маске от Dselect

Re: Поиск в подкаталогах по маске

> На каждый файл процесс порождать некультурно.

А культурно использовать внутренние средства команды find?

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