Como os outros colegas já mencionaram, xargs é seu amigo. É uma ferramenta muito poderosa e vou tentar explicar isso e fornecer uma solução para uma pegadinha comum.
O que o xargs faz é obter uma linha da entrada e anexá-la a outro comando, executando esse outro comando para cada linha na entrada. Portanto, digitando locate foobar | xargs rm -f
, a saída do comando locate será corrigida no final do comando rm -f
e executada para cada linha produzida por locate foobar
.
A pegadinha:
Mas e se houver espaços em sua (s) linha (s) retornada (s) por localizar? Isso irá quebrar o comando rm -f
porque os argumentos passados para rm precisam ser arquivos (a menos que você use a opção -r), e um caminho de arquivo precisa ser escapado ou citado se contiver espaços.
xargs fornece a opção -i, para substituir a entrada no comando que segue, em vez de apenas anexá-lo. Então eu mudaria a sugestão para
locate foobar | xargs -ixxx rm -f 'xxx'
que agora só será quebrado se os nomes de arquivos retornados por locate contiverem apóstrofos.
Eu tenho que concordar com qbi, que você deve ser cuidadoso ao usar rm -f ! Use o sinalizador -p para xargs, ou apenas execute o foobar de localização por si mesmo antes de alimentá-lo para xargs, ou elimine o -f de rm.
locate foobar | xargs -p -ixxx rm -f 'xxx'