Looping na lista de nomes de arquivos no unix

0

Suponha que no diretório unix, existem alguns arquivos colocados com o mesmo nome de arquivo, mas com extensão diferente, como

abc.001
abc.002
abc.003

Pode haver n número de arquivos.

Primeiro, preciso obter os arquivos do diretório e, em seguida, iterar em cada arquivo. Com o comando abaixo eu estou recebendo os arquivos, mas alguém pode ajudar como fazer uma iteração em cada arquivo e ler cada arquivo e fazer o processamento.?

find "/tmp/files/" -name "abc.*" -type f -exec echo {} \;
    
por user6376225 03.01.2018 / 15:03

1 resposta

2

Por que repetir? grep leva vários argumentos de arquivo de uma vez, então

grep PATTERN abc.*

deve funcionar.

Caso os arquivos não estejam todos no mesmo diretório, usar find é uma opção:

find /tmp/files -name 'abc.*' -type f -exec grep PATTERN /dev/null {} +

O + no final informa find para passar o maior número de arquivos possível para grep de uma só vez. O /dev/null é garantir que pelo menos dois arquivos sejam passados para grep , então grep sempre exibe o nome do arquivo para cada correspondência. Com o GNU grep , você pode usar a opção -H (aka --with-filename ).

    
por 03.01.2018 / 15:14