ラベル command line の投稿を表示しています。 すべての投稿を表示
ラベル command line の投稿を表示しています。 すべての投稿を表示

2011年11月1日火曜日

ファイル名 rename

ファイル名Hoge_R.xlsを人に渡して修正をお願いした時 Hoge_R-1.xlsやHoge_Rev.xlsなど修正済みという事でファイル名の後ろに何かくっついて帰ってくることは多い。これを元の名前に返すには。
(gitでファイルを管理しているためファイル名が変更されているのはヤダ)

rename -v 's/^(.*?)_R.*(\.xls)/$1_R$2/' ./*.xls

-nオプションでdry-run、変換を確認できる。

_Rはなんでもいい、固定のモノにしておくといい。つまり、ここまでが最初のファイル名の最後マークだと思ってくれ。これは、trunkが単にグループ名だとすると正規表現がややこしくなるため。

正規表現
^(.*?)_Rで行頭から渡す前のファイル名までlasy-matching
.*で追加部分
(\.xls)で拡張子

2011年6月6日月曜日

ファイルの中から特定の文字列を持つファイルの検索

find . -type f -print0 | xargs -0 grep "$1" -n --binary-files=without-match
ついでに
そこから、[ファイル名:行番号]形式で重複なくファイル名の取得
awk '{ print $1 }' | sed -E 's/(.*:[0-9][0-9]*):.*$/\1/'
これをエディタで起動すると特定の行に飛んでくれる。つまり、

find . -type f -print0 | xargs -0 grep "$1" -n --binary-files=without-match | awk '{ print $1 }' | sed -E 's/(.*:[0-9][0-9]*):.*$/\1/' | xargs geany &