В линуксе есть утилита find. У нее есть параметр -exec который позволяет для каждого выбранного файла выполнить команду. Например пишем:
find *.flv \( -type f -o -type l \) -newermt '7/01/2012' -and -not -newermt '7/31/2012' -exec rm -v {} \;
Теперь история.
Есть у меня скрипт который делает пакетную обработку файлов (т.е. много файлов разом). Мне надо дать возможность при вызове этого скрипта выполнить команду (по аналогии с вышеприведенным примером) для каждого файла в случае успешной обработки файла, и в случае неудачной обработки. Например:
python my_script.py --on_sucess rm -v {} --on_faild echo "Faild" /home/user/files/*.xml
Сейчас делаю как-то так
from subprocess import call ... for f in arguments.source: try: process(f) if arguments.on_sucess: call(arguments.on_sucess.replace('%fn',f),shell=True) except: if arguments.on_faild: call(arguments.on_faild.replace('%fn',f),shell=True)
Ну и вызов
python my_script.py --on_sucess 'rm %fn' --on_faild 'echo "Faild %fn"' /home/usr/files/*.xml
Не нравится что параметры –on_sucess и –on_faild приходится передавать строками. Вот как бы сделать что бы не строками?