Respostas:
Um simples para fará o trabalho:
for i in ./*.txt; do echo 'cat' >> "$i"; done;
Isso irá obter uma lista de todos os arquivos txt no diretório atual, fazer um loop em todos eles e echocolocar um gato neles (anexado ao conteúdo). você pode alterar >>para >, para substituir o conteúdo dos arquivos com cat.
Outra coisa que você pode fazer é teeredirecionar um fluxo para vários arquivos.
Para anexar:
echo "cat" | tee -a *.txt
Para substituir:
echo "cat" | tee *.txt
ambiguous redirect
Se os arquivos não estiverem vazios, você pode usá-lo sedsem fazer loop. Para adicionar catno início:
sed 'i\cat' *.txt
Para adicionar no final:
sed 'a\cat' *.txt
Para adicionar após a segunda linha:
sed '2 a\cat' *.txt
Para adicionar linhas antes com fooelas:
sed '/foo/ i\cat' *.txt
Porém, ele não funciona em arquivos vazios. Tipo de bug.
(Para realmente gravar nos arquivos após o teste, você precisa da -iopção sed -i 'a\cat' *.txt:)
sedis my jam;)
'i\cat'usar a barra invertida em vez da barra?
'icat'or i cat. A barra invertida é convencional, acredito. Você não pode usar forwardslash - será literalmente inserida
Abordagem Python:
#!/usr/bin/env python
import sys
for i in sys.argv[1:]:
with open(i,'w') as fd:
fd.write("cat\n")
sysmódulo para iterar sobre argumentos da linha de comandoO uso seria como ./add_cat.py *.txt, que operaria em todos os .txtarquivos no diretório de trabalho atual. A melhoria para isso pode incluir o uso do argumento nº 1 da linha de comando como string para escrever em vez de codificar "cat" lá.
echo "cat" >> *.txt?