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%%/*}最長のサフィックスを削除し、/*フォルダ名を保持します。

関連情報