Quiero ser capaz de anteponer una cadena al comienzo de cada archivo de texto en una carpeta. ¿Cómo puedo hacer esto usando bash en Linux?¿Cómo puedo agregar una cadena al comienzo de cada archivo en una carpeta en bash?
Respuesta
Esto hará eso. Puede hacerlo más eficiente si está haciendo el mismo texto en cada archivo ...
for f in *; do
echo "whatever" > tmpfile
cat $f >> tmpfile
mv tmpfile $f
done
Esto debería hacer el truco.
FOLDER='path/to/your/folder'
TEXT='Text to prepend'
cd $FOLDER
for i in `ls -1 $FOLDER`; do
CONTENTS=`cat $i`
echo $TEXT > $i # use echo -n if you want the append to be on the same line
echo $CONTENTS >> $i
done
No recomendaría hacer esto si sus archivos son muy grandes.
este es un uso inútil del ejemplo 'ls'. Use expansión de shell – ghostdog74
Puede hacerlo así:
for f in *; do
cat <(echo "someline") $f > tempfile
mv tempfile $f
done
No es muy diferente de la primera entrada, pero sí muestra cómo tratar a la salida de la sentencia 'eco' como un archivo sin tener que crear un archivo temporay para almacenar el valor
Y usted puede hacer esto con sed en 1 solo comando así
for f in *; do
sed -i.bak '1i\
foo-bar
' ${f}
done
Puede hacerlo de esta manera, sin un bucle y cat
sed -i '1i whatever' *
si desea una copia de seguridad sus archivos, use -i.bak
O usando awk
awk 'FNR==1{$0="whatever\n"$0;}{print $0>FILENAME}' *
tu sed comman parece anteponer la cadena solo al primer archivo – Raffael
funcionó como un amuleto para mí –
Usted puede usar el comando ed prescindir de archivos temporales si te gusta:
for file in *; do
(test ! -f "${file}" || test ! -w "${file}") && continue # sort out non-files and non-writable files
if test -s "${file}" && ! grep -Iqs '.*' "${file}"; then continue; fi # sort out binary files
printf '\n%s\n\n' "FILE: ${file}"
# cf. http://wiki.bash-hackers.org/howto/edit-ed
printf '%s\n' H 0a "foobar" . ',p' q | ed -s "${file}" # dry run (just prints to stdout)
#printf '%s\n' H 0a "foobar" . wq | ed -s "${file}" # in-place file edit without any backup
done | less
Esta es la más fácil que he trabajado.
sed -i '1s/^/Text
para añadir a continuación la nueva file\n/' /file/to/change
- 1. Cómo agregar una cadena al comienzo de cada línea en un archivo
- 2. cómo puedo agregar Agregar texto al comienzo de cada línea?
- 3. Cómo insertar una palabra/texto al comienzo de cada línea
- 4. Coincidencia de patrones al comienzo de una cadena en f #
- 5. En Bash, ¿cómo agrego una cadena después de cada línea en un archivo?
- 6. Ruby: eliminar caracteres en blanco al comienzo de una cadena
- 7. ¿Qué significa `@` al comienzo de una cadena en C#?
- 8. concatenar una cadena al final de cada línea de salida en bash/CSH
- 9. LaTeX - Agregar una cantidad variable de espaciado horizontal al comienzo de cada nueva línea en una secuencia
- 10. Enlace simbólico al archivo más reciente en una carpeta
- 11. Agregar una cadena delante de una cadena para cada elemento en una lista en python
- 12. Insertar cadena al comienzo de otra cadena
- 13. encontrar cadena dentro de un archivo comprimido en una carpeta
- 14. ¿Cómo procesar cada segundo archivo en bash?
- 15. ¿Cómo realizar un bucle for en cada carácter en una cadena en Bash?
- 16. ¿Agregar una carpeta al instalador en wix no archivos?
- 17. ¿Cómo puedo validar un editor tinyMCE, si está en blanco al agregar una cadena al lado?
- 18. Cómo generar una cadena multilínea en Bash?
- 19. ¿Cómo puedo restablecer el puntero de archivo al comienzo del archivo en Java?
- 20. Bash: ¿Cómo puedo reemplazar una cadena por una nueva línea en osx bash?
- 21. Recortar los ceros al comienzo de una cadena usando PHP
- 22. Mire cada carácter en una cadena
- 23. primer carácter de una cadena en Bash
- 24. C#: Antecedente al comienzo de un archivo
- 25. Xcode: cómo agregar un archivo a una referencia de carpeta
- 26. ¿Cómo desbloqueo una carpeta/archivo en Linux?
- 27. En bash cómo uso ls para listar una sola carpeta
- 28. ¿Cómo agregar una palabra al comienzo de varias líneas en vim?
- 29. Escribiendo una cadena en un archivo en una nueva línea cada vez
- 30. ¿Puedo alinear variables en una cadena con echo y bash?
1 .. solución mejor que la mía :) – Cfreak
Tanto '$ F' debería ser' "$ f" '. Sería bueno hacer algunos errores también. Además, cambia los permisos y la propiedad del archivo original. – ikegami