我試圖用-
替換所有_
下劃線字符所有文件名中的連字符.mat
在一個文件夾內。 I型不同版本不成功的:下命名命令(Perl和Unix shell)中的下劃線
rename -f 'w/_/-' *.mat
有人能向我解釋什麼是錯的?
我試圖用-
替換所有_
下劃線字符所有文件名中的連字符.mat
在一個文件夾內。 I型不同版本不成功的:下命名命令(Perl和Unix shell)中的下劃線
rename -f 'w/_/-' *.mat
有人能向我解釋什麼是錯的?
如果您使用a Perl-based rename
(如您的標籤所示),則w
不是Perl正則表達式操作。
rename -f 's/_/-/g' *_*.mat
我不明白你是否使用shell重命名或Perl重命名:我不明白你的命令在任何上下文中。
一個Perl的命令行腳本在當前目錄重命名所有*.mat
文件看起來像這樣
perl -e 'do { (my $f = $_) =~ tr/_/-/; rename $_, $f } for glob "@ARGV"' *.mat
用'@ ARGV'替換'glob「@ARGV」'。你正在通過一些已經被圈起來的東西。這將無論什麼都不做,或者根據文件名稱給出錯誤的結果。具體來說,如果任何'mat'文件的名字中有空格,你的模式將失敗。 [固定] – ikegami 2012-04-07 20:51:26
謝謝,@Daxim。我仍然使用駱駝書第一版的Perl'rename'的輕度更新版本。 – 2012-04-07 19:02:05
這項工作!感謝@Leffler。起初我嘗試過's',但後來改成'w'。但是我不知道我必須在最終的 – escorciav 2012-04-18 04:23:23
@escorciav:AFAIK處使用g,'w'不是Perl替換運算符。最後的'g'確保所有的下劃線都被連字符替代。如果你只想映射第一個下劃線,那麼你不需要'g'。我想有一個機會,腳本會自動應用'g'。 – 2012-04-18 07:15:29