• 締切済み

特定のフレーズで挟まれた任意の文字列をコピーさせてファイル名に追記したい

質問タイトルについてですが、複数のファイルに対し処理を行うためのスクリプトを書きたい場合、例えば abc defあいうえおghi jkl という文字列がファイル内にある場合、それを検索させて「あいうえお」の部分にあたる文字列(各ファイルにより違う文字列)をコピーして、その開いているファイル名の最後(「.拡張子」の直前)に追記(リネーム)させたいのですが、具体的にどういう文字列のスクリプトを書けば良いのかわからず、行き詰まっております。 どうぞご教示ください。 宜しくお願い致します。

みんなの回答

回答No.1

つまり、「abc defあいうえおghi jkl」と記述されている「example.txt」があるとして、それを「exampleあいうえお.txt」にリネームしたいということでしょうか。 $ perl -ne '($str) = /abc def(.+?)ghi jkl/ or next; $old = $ARGV; rename $old, ($ARGV =~ s/(.+?)(\.)/$1$str$2/, $ARGV)[1]' *.txt 良い例ではありませんが、動くことは動くと思います。 /abc def(.+?)ghi jkl/ や *.txt などの部分を適宜置き換えて試してみてください。 リネーム処理ですが、正規表現より簡単なやり方は思い浮かびませんでした。

umanie
質問者

お礼

おっしゃる通りの変更の仕方を希望しておりました。 使ってみた所、当方でも動作しました。 ご親切にどうもありがとうございました。

関連するQ&A