У меня есть один скрипт, который только записывает данные в stdout
. Мне нужно запустить его для нескольких файлов и создать другой выходной файл для каждого входного файла, и мне было интересно, как использовать для этого find -exec
. Поэтому я в основном пробовал несколько вариантов этого (я заменил скрипт cat
только для целей проверки):
find * -type f -exec cat "{}" > "{}.stdout" \;
но не смог заставить его работать, поскольку все данные записывались в файл, буквально названный {}.stdout
.
В конце концов, я мог бы работать с:
find * -type f -exec sh -c "cat {} > {}.stdout" \;
Но в то время как эта последняя форма хорошо работает с cat
, мой сценарий требует, чтобы переменные среды загружались через несколько сценариев инициализации, таким образом, я получаю:
find * -type f -exec sh -c "initscript1; initscript2; ...; myscript {} > {}.stdout" \;
Что кажется пустой тратой, потому что у меня есть все, что уже было инициализировано в моей текущей оболочке.
Есть ли лучший способ сделать это с find
? Другие однострочные линии приветствуются.