Ich habe die Verzeichnisstruktur wie folgt:
Folder1/
|____file.txt
Folder2/
|____file.txt
Folder3/
|____file.txt
:
Foldern/
|____file.txt
Jede TXT-Datei in den Verzeichnissen enthält ein Wort, das ich durch den Verzeichnisnamen ersetzen möchte.
datei.txt:
"name": "Engineering",
Ich möchte das Wort Engineering durch den Verzeichnisnamen ersetzen, z. B. für Ordner1:
"name": "Folder1"
Mein erster Versuch ist wie folgt:
for f in Folder*; do (cd $f; echo $f; sed -i -e "s/Engineering/Folder*/" file.txt); done
Der sed-Befehl scheint jedoch keine Folder*
Ordnernummern zu erkennen.
Antwort1
Es ist nicht nötig, cd
in das Verzeichnis zu gehen. Sie können die Dateipfade durchlaufen und den Ordnernamen extrahieren:
for file in Folder*/file.txt; do
sed -i -e "s/Engineering/${file%%/*}/" "$file"
done
Die Parametererweiterung ${file%%/*}
entfernt das längste Suffix /*
und belässt den Ordnernamen.