Risposte:
Un semplice per farà il lavoro:
for i in ./*.txt; do echo 'cat' >> "$i"; done;
Verrà visualizzato un elenco di tutti i file txt nella directory corrente, si eseguirà un loop su di essi e si echoinserirà in essi (aggiungendo al contenuto). puoi cambiare >>in >, per sovrascrivere il contenuto dei file con cat.
Un'altra cosa che puoi fare è utilizzare teeper reindirizzare uno stream su più file.
Per aggiungere:
echo "cat" | tee -a *.txt
Per sovrascrivere:
echo "cat" | tee *.txt
ambiguous redirect
Se i file non sono vuoti è possibile utilizzare sedsenza loop. Per aggiungere catall'inizio:
sed 'i\cat' *.txt
Aggiungere alla fine:
sed 'a\cat' *.txt
Per aggiungere dopo la seconda riga:
sed '2 a\cat' *.txt
Per aggiungere prima delle righe con fooin esse:
sed '/foo/ i\cat' *.txt
Tuttavia, non funziona su file vuoti. Tipo di bug.
(Per davvero scrivere i file dopo il test è necessario l' -iopzione di: sed -i 'a\cat' *.txt)
sedis my jam;)
'i\cat'usa la barra rovesciata anziché la barra?
'icat'o i cat. La barra rovesciata è convenzionale credo. Non puoi usare forwardslash - verrà letteralmente inserito
Approccio Python:
#!/usr/bin/env python
import sys
for i in sys.argv[1:]:
with open(i,'w') as fd:
fd.write("cat\n")
sysmodulo per scorrere gli argomenti della riga di comandoL'utilizzo sarebbe come ./add_cat.py *.txt, che opererebbe su tutti i .txtfile nella directory di lavoro corrente. Il miglioramento a questo potrebbe includere l'uso dell'argomento da riga di comando n. 1 come stringa per scrivere invece di codificare "cat" lì.
echo "cat" >> *.txt?