gnu parallel, как использовать с ffmpeg

Замена в файлах

Ваша команда ненадежна по нескольким причинам : она исключает все пути, содержащие .git в качестве подстроки, она не работает с путями, содержащими пробелы или \ '", он заменяет ввод любым символом между com и foo . Последняя проблема легко решается добавлением обратной косой черты перед точкой. имена файлов могут быть, а могут и не быть проблемой в вашей настройке - деревья исходных текстов имеют тенденцию быть ручными. Также -name "*" является избыточным (оно всегда совпадает). Вот безопасная и более простая альтернатива, которая должным образом опускает поддерево .git .

find . -name .git -prune -o -type f -exec sed -i 's/com\.foo/org.bar/g' {} +

Это все еще заменяет, например, com.fooalso на org.baralso , что, вероятно, нежелательно, если это произойдет. Вот более безопасная конструкция ction:

find . -name .git -prune -o -type f -exec sed -i -e 's/com\.foo$/org.bar/' -e 's/com\.foo\([^-_0-9A-Za-z]\)/org.bar\1/' {} +

Переименование файлов с помощью zsh

Загрузите функцию zmv с автозагрузкой -U zmv , затем вы можете использовать ее для переименования файлов на основе шаблонов подстановочных знаков . Я думаю, что вы ищете на самом деле

zmv -w '**/com/foo' '$1/org/bar'
zmv -w '**/*com.foo' '$1/${2}org.bar'
zmv '(**/)(*)com.foo([^-_0-9A-Za-z]*)' '$1${2}org.bar$3'
3
28.04.2019, 20:52
1 ответ

Я использую пример из вашего предыдущего вопроса в качестве примера для параллелизма GNU

ls *.mp4 | parallel ffmpeg -i {} fr1/{.}_%d.jpg -hide_banner

Я могу изменить ответ, если это не совсем то, что вам нужно. «{}» заменяется GNU параллельно с полным именем файла, а «{.}» заменяется именем файла с удаленным последним сегментом, разделенным точками.

6
27.01.2020, 21:17

Теги

Похожие вопросы