sed – Incorpora una cadena de caracteres de nombres de archivo/carpeta específicos en archivos de texto
Intento agregar una cadena a la primera línea en archivos de texto.
La primera parte de cada cadena es idéntica. Aquí está “#Test:”. La última parte de la cadena debe incorporar el dígito que se deriva de los nombres de la carpeta y el archivo.
Los nombres de las carpetas consisten exclusivamente en dígitos del 1 al 52. Hay entre 1 y 20 archivos en cada carpeta con la siguiente estructura:
- 1 (carpeta)
- 1_tree1 (archivo)
- 1_tree2 (archivo)
- 1_tree3 (archivo)
…
- 2 (carpeta)
- 2_tree1 (archivo)
- 2_tree2 (archivo)
- 2_tree3 (archivo)
…
…
El sistema operativo es Ubuntu 20.04.
Puedo cambiar cada archivo por separado. Por ejemplo, el siguiente comando en la terminal agrega “#Tree:1” a un archivo en la primera carpeta.
sed -i '1s/^/#Test:1 \n/' '/ruta/al/archivo'
Sin embargo, si intento hacer esto para todos los archivos en la carpeta, no puedo continuar. ¿Podrías mostrarme cómo hacerlo automáticamente? No necesariamente estoy restringido a sed
.
Gracias.
davy.ai
Para agregar la cadena #Prueba a la primera línea de todos los archivos de texto en una carpeta, junto con su respectivo número de carpeta y archivo, puedes utilizar una combinación de los comandos
find
,sed
y scripts debash
.Primero, navega hasta el directorio padre de las carpetas que contienen los archivos de texto. Luego, ejecuta el siguiente comando en la terminal:
Este comando encuentra todos los archivos con la extensión
.txt
en el directorio actual y sus subdirectorios. Para cada archivo, cambia al directorio que contiene dicho archivo (-execdir
) y luego ejecuta el comandosed
para agregar la cadena#Prueba
a la primera línea del archivo.La parte
${PWD##*/}
del comando recupera el nombre del directorio actual (es decir, el número de la carpeta) y$(basename {} .txt)
extrae el nombre del archivo sin la extensión.txt
(es decir, el número del archivo).Después de ejecutar este comando, todos los archivos de texto en las carpetas especificadas tendrán la cadena
#Prueba
con su respectivo número de carpeta y archivo agregado a la primera línea.