2012-04-07 19 views
2

_下線文字をすべてというハイフン文字で置き換えようとしています。.matは1つのフォルダ内にあります。私は、異なるバージョンを入力し は失敗したの:名前変更コマンドのアンダースコア

rename -f 'w/_/-' *.mat 

誰かが間違っているものを私に説明できますか?

答えて

4

a Perl-based rename(あなたのタグが示唆するように)を使用している場合、wはPerlの正規表現の操作ではありません。

rename -f 's/_/-/g' *_*.mat 
+0

おかげで、@Daximのように見えます。私はまだCamel Bookの第1版のPerl 'rename'を少し更新したバージョンを使用しています。 –

+0

この作品!!!ありがとう@Leffler。私は最初に 's'で試しましたが、後に 'w'に変更します。しかし、私は最後に – escorciav

+0

@escorciavを使ったことが分かりません:AFAIK、 'w'はPerl置換演算子ではありません。最後の 'g 'は、すべてのアンダースコアがハイフンに置き換えられることを保証します。最初のアンダースコアのみをマップしたい場合、 'g'は必要ありません。スクリプトが 'g'を自動的に適用する可能性があります。 –

2

シェルの名前変更やPerlの名前変更を使用しているかどうかはわかりません。いずれのコンテキストでもコマンドを理解できません。現在のディレクトリ内のすべての*.matのファイルの名前を変更する

AのPerlコマンドラインスクリプトは、この

perl -e 'do { (my $f = $_) =~ tr/_/-/; rename $_, $f } for glob "@ARGV"' *.mat 
+1

'glob '@ARGV"を '@ ARGV'に置き換えてください。すでにグロブにされているものをグロビングしています。これは、ファイル名に応じて何もしないか、間違った結果を与えるかのどちらかです。具体的には、 'mat'ファイルのいずれかに名前にスペースがあると、パターンは失敗します。 [一定] – ikegami

関連する問題