Поиск и удаление файлов по списку.

Народ выручайте, уже голова кипит, сам не соображу как сделать.
Есть каталог, в нем лежит скриптик который по определенной маске ищет рекурсивно файлы которые надо удалить. Имена этих файлов заносятся в список тектстового файла (без полного пути, только имя). Как в этом же скрипте организовать удаление этих файлов согласно составленного списка?
Конструкция
cat file_name.txt | xargs rm -rv
не работает, поскольку в файле file_name.txt у нас находятся только имена, без полного пути. Ну либо я что-то делаю не так.
если в файле совсем без путей, то и непонятно откуда удалять.
такие дела.
если искать через find, то можно и удалять сразу: -delete
можно ли при этом сделать файл (если он нужен, конечно)? можно: -fprint
такие дела.
То, что find умеет удалять, я уже нагуглил. Но как правильно это оформить в скрипте? Искать нужно в подпапках того же каталога, из которого запущен скрипт. Все максимально просто. Никаких доп. аргументов скрипту не передается. Запустил, отработал, создал файлик с ненужными файлами. Раньше эти файлы я удалял вручную. Теперь хочу автоматизировать, чтоб файлы удалялись тем же скриптом. Знаний команд и их синтаксиса у меня не хватает. Поэтому задал вопрос. Решение-то должно быть банальное. Операция не сложная и большинство вводных уже есть.
а нужно чтобы и список в файле и удалить?
такие дела.
Да файл потом почистить не проблема. Нужно именно файлы из списка удалять.
Причем сам скрипт всегда находится в корневом каталоге по отношению к обрабатываем файлам. Но сами файлы лежат в каталогах с любым названием и произвольной вложеностью. Т.е. маску по пути создать не получится.
Сам по себе список файлов появляется согласно обработке других файлов (в основном бинарники) из которых и достаются имена ненужных файлов.
всё таки не понятно ТЗ.

find обходит всё дерево каталогов вглубь от заданного. если можно сформулировать условие на момент запуска файнда, то он и удалит.
если вдруг надо принимать решение по каждому файлу отдельно по разным критериям (ну мало ли), то тогда find нам составляет список файлов в дереве (с путями) и мы по нему в цикле движемся и обрабатываем каждый файл.
такие дела.
vadik, пиши в файл полные пути просто
или сразу удаляй

непонятна проблема
а по короткому имени файла без путей, как удалять то, неизвестно же где они
vadik
не работает, поскольку в файле file_name.txt у нас находятся только имена, без полного пути
а так?

cat "/путь/file_name.txt" |xargs -I _ find "/путь _к_каталогу_где_искать" -type f -name '_' -delete
На скорую руку … можно где то и подсократить ... не спорю - длинно, но зато прозрачно и понятно ...

Имеем файл ~/list.txt с перечнем файлов
cat ~/list.txt
pacman.conf
grub.cfg

Запускаем скрипт ~/test.sh
cat ~/test.sh
#!/bin/bash
 cd /
 cat ~/list.txt | while read line
     do
          echo  "find `pwd` -name  '$line' 2> /dev/null"  >> ~/list2.sh
     done
 sed -i '1s/^/#!\/bin\/bash\n/' ~/list2.sh
 chmod +x ~/list2.sh
 exit 0

Получаем другой скрипт ~/list2.sh , уже готовый к запуску
cat ~/list2.sh
#!/bin/bash
find / -name  'pacman.conf' 2> /dev/null
find / -name  'grub.cfg' 2> /dev/null

Запускаем этот скрипт …. и получаем полные пути файлов
~/list2.sh
/home/vasek/Документы/Config_/pacman_/pacman.conf
/etc/pacman.conf
/home/vasek/Документы/Grub/INFO_structure/grub-2.02_скомпилированный/docs/grub.cfg
/home/vasek/Документы/Grub/INFO_structure/grub_git/docs/grub.cfg
/home/vasek/Документы/Флеш/loopback_cfg/uberimg/grub.cfg
/home/vasek/Документы/Флеш/Grub4Dos_soft_doc_file/File/EFI/boot/grub.cfg
/home/vasek/Документы/Флеш/Grub4Dos_soft_doc_file/File_new/EFI/boot/grub.cfg
/boot/grub/grub.cfg

Дальше уже можно использовать и эту команду
cat file_name.txt | xargs rm -rv
Но желательно перед удалением проверить на одинаковые названия …

PS - хотя разумнее сразу составлять список с полными путями. Из бинариков тоже можно получить полные пути.
Ошибки не исчезают с опытом - они просто умнеют
 
Зарегистрироваться или войдите чтобы оставить сообщение.