Para forçar o xargs
a executar somente sed
com um único arquivo por vez, use -n 1
com xargs
. Você também deve passar os nomes de caminho de find
usando -print0
e obter xargs
para recebê-los com -0
(se find
e xargs
oferecer suporte a essas opções não padrão), para que nomes de caminho contendo espaços etc. manuseado corretamente. Você provavelmente também precisa especificar que está procurando arquivos regulares (e não diretórios, etc.) e definitivamente precisa citar esse shell glob (ou pode expandir para qualquer nome de arquivo correspondente no diretório atual):
find . -type f -name '*.sv' -print0 | xargs -0 -n 1 sed -i -e '<command>' -e '<command>'
Ou use apenas find
:
find . -type f -name '*.sv' -exec sed -i -e '<command>' -e '<command>' {} ';'
Relacionados: