Не нужно усложнять! Почему бы просто не:
mkdir../temp
mv *.{jpg,png,gif,xcf}../temp/
mv * /desired/target/directory/
mv../temp/*.
rmdir../temp
Конечно, это не будет работать для всего дерева каталогов, только для одного плоского каталога с файлами.
В зависимости от того, как приложение обрабатывает ввод, и при условии, что входные данные отформатированы правильно, вы можете сделать что-то вроде этого cat input.dat | app > output.dat 2> log.txt
. Ввод — это часть, которая содержит большинство проблем, это действительно зависит от того, как приложение ожидает получить свой ввод, т.е. разделены новой строкой, разделены табуляцией и т. д.
Вы также можете использовать исходный синтаксис.
app < input.dat > output.dat 2> log.txt
Но лично я считаю метод cat
более универсальным и широко используемым в Linux.