Eu tenho a estrutura de diretórios conforme abaixo:
Folder1/
|____file.txt
Folder2/
|____file.txt
Folder3/
|____file.txt
:
Foldern/
|____file.txt
Cada arquivo .txt nos diretórios possui uma palavra que desejo substituir pelo nome do diretório.
arquivo.txt:
"name": "Engineering",
Estou procurando substituir a palavra Engenharia pelo nome do diretório, por exemplo, para Pasta1:
"name": "Folder1"
Minha tentativa inicial é a seguinte:
for f in Folder*; do (cd $f; echo $f; sed -i -e "s/Engineering/Folder*/" file.txt); done
No entanto, o comando sed não parece ser visto Folder*
como números de pasta.
Responder1
Não há necessidade de cd
entrar no diretório. Você pode percorrer os caminhos dos arquivos e extrair o nome da pasta:
for file in Folder*/file.txt; do
sed -i -e "s/Engineering/${file%%/*}/" "$file"
done
A expansão do parâmetro ${file%%/*}
remove o sufixo mais longo /*
e deixa o nome da pasta.