複数のディレクトリがあり、各ディレクトリには次の行を含むファイルが含まれています。
../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>
この変数には、$epwd
sedで使用できるエスケープされたディレクトリ名が含まれています。 sed コマンドは、a_a のすべての発生を作業ディレクトリーに置き換えます。
編集:元の回答の最初の行は、フルパスではなく現在のディレクトリ名のみを含むように編集されました。フルパスを使用するには
epwd=$(pwd|sed 's/\//\\\//g')