sed コマンドを使用してテキスト ファイルをディレクトリ名に置き換える

sed コマンドを使用してテキスト ファイルをディレクトリ名に置き換える

ディレクトリ構造は以下のようになります。

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%%/*}最も長いサフィックスが削除され/*、フォルダー名が残ります。

関連情報