複数ファイルの文字列を現在のサブディレクトリ名に変更する

複数ファイルの文字列を現在のサブディレクトリ名に変更する

複数のディレクトリがあり、各ディレクトリには次の行を含むファイルが含まれています。

../a_a_q1.out ../a_a_q2.out ../a_a_q3.out

a_aすべてのサブディレクトリを繰り返し、そのセクションを現在のサブディレクトリ名に変更したいと思います。たとえば、サブディレクトリがと呼ばれる場合は、awesome_directory次の行を読む必要があります。

../awesome_directory_q1.out ../awesome_directory_q2.out ../awesome_directory_q3.out

どうやってこれを達成できますか?

サブディレクトリ名のみを使用したいです。たとえば、awesome_directoryトランザクション全体(//something/server/user/other_stuff/more/awesome_directory)の代わりに()部分のみが必要です。

ベストアンサー1

Bashの2つの段階には、次の1つの方法があります。

epwd=$(basename `pwd`)
sed -i "s/a_a/$epwd/g" <filename>

この変数には、$epwdsedで使用できるエスケープされたディレクトリ名が含まれています。 sed コマンドは、a_a のすべての発生を作業ディレクトリーに置き換えます。

編集:元の回答の最初の行は、フルパスではなく現在のディレクトリ名のみを含むように編集されました。フルパスを使用するには

epwd=$(pwd|sed 's/\//\\\//g')

おすすめ記事