Tengo la estructura de directorios de la siguiente manera:
Folder1/
|____file.txt
Folder2/
|____file.txt
Folder3/
|____file.txt
:
Foldern/
|____file.txt
Cada archivo .txt en los directorios tiene una palabra que quiero reemplazar con el nombre del directorio.
archivo.txt:
"name": "Engineering",
Estoy buscando reemplazar la palabra Ingeniería con el nombre del directorio, por ejemplo, Carpeta1:
"name": "Folder1"
Mi intento inicial es el siguiente:
for f in Folder*; do (cd $f; echo $f; sed -i -e "s/Engineering/Folder*/" file.txt); done
Sin embargo, el comando sed no parece aparecer Folder*
como números de carpeta.
Respuesta1
No es necesario cd
ingresar al directorio. Puede recorrer las rutas de los archivos y extraer el nombre de la carpeta:
for file in Folder*/file.txt; do
sed -i -e "s/Engineering/${file%%/*}/" "$file"
done
La expansión del parámetro ${file%%/*}
elimina el sufijo más largo /*
y deja el nombre de la carpeta.