Como posso combinar ou colar texto em um comando linux no terminal?
Como posso combinar ou colar texto em um comando linux no terminal?
Eu gostaria de executar o seguinte comando do Linux ls -d $PWD/*que resulta: por exemplo.
/media/elias/2000_0101_004828_006.MP4
/media/elias/2000_0101_011328_007.MP4
/media/elias/2000_0101_013829_008.MP4
/media/elias/2000_0101_020328_009.MP4
/media/elias/2000_0101_021020_006.MP4
/media/elias/2000_0101_021620_006.MP4
Eu gostaria de executar um comando linux de forma que o resultado impresso produzido seja:
file '/media/elias/2000_0101_004828_006.MP4'
file '/media/elias/2000_0101_011328_007.MP4'
file '/media/elias/2000_0101_013829_008.MP4'
file '/media/elias/2000_0101_020328_009.MP4'
file '/media/elias/2000_0101_021020_006.MP4'
file '/media/elias/2000_0101_021620_006.MP4'
Isso é necessário para o Videofiles.txt que o comando ffmpeg concat requer para manipular arquivos de vídeo. Eu gostaria de executar uma única linha de comando para fazer todo esse trabalho automaticamente. Os resultados do comando linux serão salvos em um arquivo txt, por exemplo
ls -d $PWD/* > videofiles.txt
isso é possível?
ps. meu comando ls lista os arquivos em ordem de data?
Respostas
A ordem não é determinada por ls, ela depende da ordem de classificação lexical LC_COLLATEaplicada ao shell *glob para sua localidade.
Dito isso, eu evitaria lstudo e faria algo como
printf "file '%s'\n" $PWD/* > videofiles.txt
(você pode alterar *para *.MP4se desejar corresponder .MP4apenas os arquivos).
Se você deseja que os arquivos sejam ordenados por hora de modificação (também conhecido como "mtime") como faria com ls -t, então isso não é possível nativamente no bash, mas é no zsh usando qualificadores glob ex.
printf "file '%s'\n" $PWD/*.MP4(om)
para classificar por mtime crescente (como ls -t) ou
printf "file '%s'\n" $PWD/*.MP4(Om)
para classificar por mtime decrescente (como ls -tr).