Depois de ler seu comentário
The input may be coming from a file,
Se a lista de arquivos já estiver no arquivo, você pode simplesmente pular a parte de localização e usar apenas a parte xargs
.
Veja a página xargs
man.
Use a opção -a
de xargs
para passar o nome do arquivo do arquivo, onde está a lista que xargs
deve ler.
Se os nomes de arquivos dentro da lista não forem um nome de arquivo completo e apenas passar isso para wc
não é suficiente porque não há diretório você pode editar o arquivo, para que o caminho completo seja incluído (você deve poder fazer que sem editá-lo manualmente, usando sed
ou awk
ou similar).
Ou você pode usar o mecanismo de substituição de string na opção xargs
( -I
em xargs
)
(note que se você usar este último método, com -I
de substituição, cada linha invocará um programa diferente e que há algumas limitações no tamanho máximo - veja a página man para detalhes)
Se a sua entrada vem de um arquivo (e, portanto, você não pode usar o mecanismo fornecido pela opção -0
de xargs
), você deve prestar muita atenção se houver espaço ou outros caracteres estranhos no nome do arquivo . Se houver, você deve encontrar uma maneira de evitar algum resultado inesperado.
Por exemplo, se você tiver um arquivo chamado "meu documento.txt"
e na sua lista está escrito como
my document.txt
e depois é passado como está escrito no arquivo, você teria que o que é executado é
wc my document.txt
e isso resultaria no programa wc
procurando por dois arquivos, um chamado my e um chamado document.txt
Você deve ter certeza de que o que é passado é algo como
wc "my document.txt"
ou
wc my\ document.txt
(A primeira maneira pode ser mais fácil se você já estiver usando o mecanismo de substituição, a segunda se você já estiver editando seu arquivo.)
Bem, se você puder, talvez seja mais fácil editar o arquivo de entrada para que cada item seja separado por um caractere nulo e use a opção -0
de xargs
.