ディレクトリ構造は以下のようになります。
Folder1/
|____file.txt
Folder2/
|____file.txt
Folder3/
|____file.txt
:
Foldern/
|____file.txt
ディレクトリ内の各 .txt ファイルには、ディレクトリ名に置き換えたい単語が含まれています。
ファイル.txt:
"name": "Engineering",
Engineering という単語をディレクトリ名に置き換えたいと考えています。例: Folder1 の場合:
"name": "Folder1"
私の最初の試みは次のとおりです。
for f in Folder*; do (cd $f; echo $f; sed -i -e "s/Engineering/Folder*/" file.txt); done
ただし、sed コマンドはFolder*
フォルダー番号として認識されないようです。
答え1
cd
ディレクトリに入る必要はありません。ファイル パスをループしてフォルダー名を抽出できます。
for file in Folder*/file.txt; do
sed -i -e "s/Engineering/${file%%/*}/" "$file"
done
パラメータ展開により、${file%%/*}
最も長いサフィックスが削除され/*
、フォルダー名が残ります。