Respuestas:
Un simple para hará el trabajo:
for i in ./*.txt; do echo 'cat' >> "$i"; done;
Esto obtendrá una lista de todos los archivos txt en el directorio actual, los recorre por todos echo
lados y los agrega (agrega al contenido). puede cambiar >>
a >
, para sobrescribir el contenido de los archivos con cat.
Otra cosa que puede hacer es usar tee
para redirigir una secuencia a múltiples archivos.
Para anexar:
echo "cat" | tee -a *.txt
Para sobrescribir:
echo "cat" | tee *.txt
ambiguous redirect
Si los archivos no están vacíos, puede usarlos sed
sin bucles. Para agregar cat
al inicio:
sed 'i\cat' *.txt
Para agregar al final:
sed 'a\cat' *.txt
Para agregar después de la segunda línea:
sed '2 a\cat' *.txt
Para agregar líneas anteriores con foo
ellas:
sed '/foo/ i\cat' *.txt
Sin embargo, no funciona en archivos vacíos. Una especie de error.
(Para realmente escribir en los archivos después de las pruebas que necesita la -i
opción: sed -i 'a\cat' *.txt
)
sed
es mi mermelada;)
'i\cat'
usa la barra diagonal inversa en lugar de la barra diagonal?
'icat'
o i cat
. La barra invertida es convencional, creo. No se puede usar la barra frontal, se insertará literalmente
Enfoque de Python:
#!/usr/bin/env python
import sys
for i in sys.argv[1:]:
with open(i,'w') as fd:
fd.write("cat\n")
sys
módulo para iterar sobre los argumentos de la línea de comandosEl uso sería como ./add_cat.py *.txt
, que funcionaría en todos los .txt
archivos en el directorio de trabajo actual. La mejora de esto podría incluir el uso de la línea de comando argumento # 1 como cadena para escribir en lugar de codificar "cat" allí.
echo "cat" >> *.txt
?