Combinando bash% com xargs%

3

Este artigo diz que você pode usar a sintaxe % para remover extensões de arquivo:

$ s=a/b.mkv
$ echo ${s%.*}
a/b

Como você combina a sintaxe % com o % in xargs para alcançar o resultado desejado para um conjunto de linhas?

$ cat | xargs -I % echo ffmpeg -i % (INSERT MAGIC HERE)
a/b.mkv
ffmpeg -i a/b.mkv a/b.mp4
c/d.mkv
ffmpeg -i c/d.mkv c/d.mp4
    
por forthrin 26.12.2014 / 12:57

2 respostas

2

Com os comentários recebidos, consegui encontrar uma solução curta e bonita:

find . -name '*.mkv' | while read f; do echo ffmpeg -i "$f" "${f%.*}.mp4"; done
    
por 26.12.2014 / 13:52
1

Com base na resposta anterior, você também pode usar zsh . Se esta é sua concha:

for i in **/*.mkv; echo ffmpeg -i $i $i:r.mp4

Caso contrário:

zsh -c 'for i in **/*.mkv; echo ffmpeg -i $i $i:r.mp4'

Isso evitaria problemas com espaço em branco em nomes de arquivos.

    
por 26.12.2014 / 14:03

Tags