Localiza arquivos e anexa texto recursivamente a eles

1

Estou procurando uma resposta para esse problema há algum tempo: como posso usar o texto de acréscimo de pesquisa para todos os hits? Meu método original era algo como sudo find / -type f -name "*.py" -exec cat somecode.txt >> {} \;
apesar de tudo o que fez foi criar um nome de arquivo {} preenchido com o conteúdo de somecode.txt repetido um para cada hit. Eu tentei executar o comando como sudo find / -type f -name "*.py" -exec echo somecode.txt >> {} \;
embora isso tenha tido o mesmo efeito, só que desta vez {} foi preenchido com a string somecode.txt repetida uma vez f ou todo sucesso. Existe alguma outra maneira de conseguir isso, ou estou apenas faltando algo fundemental?
EDIT:
Meu objetivo pretendido é que o conteúdo de somecode.txt seja anexado a todos os arquivos python no sistema.

    
por Interesting... 04.12.2015 / 02:12

1 resposta

2

Apenas -exec um shell para cada argumento:

find . -type f -name "*.py" -exec sh -c 'cat somecode.txt >> "$1"' -- {} \;

(Começar sem sudo e em um local diferente de / pode ser uma boa ideia).

Se você quiser ser mais eficiente, convém tentar algo como:

find . -type f -name "*.py" -exec sh -c '< somecode.txt tee -a "$@"' -- {} +
    
por 04.12.2015 / 03:13

Tags