O comando a seguir lista as linhas em list_file
que contêm o nome de um arquivo de imagem:
<list_file xargs -d \n file -i | sed -n 's!: *image/[^ :]*$!!p'
-
file -i FOO
observa os primeiros bytes deFOO
para determinar seu formato e imprime uma linha comoFOO: image/jpeg
(-i
significa mostrar um tipo MIME; é específico do arquivo GNU encontrado no Linux). -
xargs -d \n
lê uma lista de arquivos (um por linha) da entrada padrão e aplica o comando subsequente a ela. (Isso requer GNU xargs como encontrado no Linux; em outros sistemas, deixe de fora-d \n
, mas a lista de arquivos não pode conter\'"
ou espaço em branco). - O comando
sed
filtra o sufixo: image/FOO
para exibir apenas os nomes dos arquivos. Ele ignora as linhas que não correspondem aos arquivos de imagem.