Я не думаю, что вы можете сделать это, запустив program.sh
только один раз, так как он будет продолжать создавать файлы, и вы никогда не сможете быть уверены, что файл будет завершен.
Вместо этого запускайте программу один раз для каждой строки filenames.txt:
while IFS= read -r FILE; do # loop through files in filenames.txt
echo "$FILE" |./program.sh # run program once and end it with newline
mv created_filename /some/other/location/${FILE}.ext; # move file
done < filenames.txt
mv
вместо cp
, так будет быстрее, если вы перейдете на ту же файловую систему. .ext
на выходной формат (, например..png
). Можно сделать так:
(
while IFS= read -r FILE; do
echo "$FILE"
sleep 1 # or somehow make a trigger to see when the file is ready...
mv output_file /somewhere/else
done < filenames.txt;
) |./program.sh
(через)
то же самое с использованием xargs:
(
xargs -a filenames.txt -I{} sh -c 'echo {}; sleep 1; mv file /somewhere/else'
) |./program.sh