Como os outros caras já mencionaram, xargs é seu amigo. É uma ferramenta realmente poderosa e tentarei explicá-la e fornecer uma solução alternativa para uma pegadinha comum.
O que o xargs faz é pegar uma linha da entrada e anexá-la a outro comando, executando esse outro comando para todas as linhas da entrada. Portanto, digitando locate foobar | xargs rm -f
, a saída do comando localizar será corrigida no final do rm -f
comando e executada para cada linha produzida por locate foobar
.
A pegadinha:
Mas e se houver espaços em suas linhas retornadas por localização? Isso interromperá o rm -f
comando porque os argumentos transmitidos à rm precisam ser arquivos (a menos que você use a opção -r) e um caminho do arquivo precisa ser escapado ou citado se contiver espaços.
O xargs fornece a opção -i, para substituir a entrada no comando a seguir, em vez de apenas anexá-la. Então eu mudaria a sugestão para
locate foobar | xargs -ixxx rm -f 'xxx'
que agora só será interrompido se os nomes de arquivos retornados pela localização contiverem apóstrofos.
Eu tenho que concordar com qbi, que você deve ter cuidado ao usar rm -f ! Use o sinalizador -p para xargs, ou apenas execute o local foobar sozinho antes de alimentá-lo com xargs ou solte -f de rm.
locate foobar | xargs -p -ixxx rm -f 'xxx'
rm -i
localizar fooBar``