2009-10-27 227 views
0

我有成千上萬的文件需要用以下格式重命名。 2008:09:18:17:45:48 -alfanumeric-alfanumeric.wav第一部分是日期。在debian中重命名一堆文件

Ex。 2008:09:18:17:45:48-703-s.wav

甲希望其重命名爲:

20080918.174548.703.s.wav

基本上除去':',並製作更易於閱讀的格式,並且更容易分割。

我知道重命名是即時通訊尋找,但正則表達式不工作。我打字:

命名 的/(\ d)(\ d)(\ d)(\ d)(\ d): - (?)(\ d) - WAV/$ 1 $ 2 $ 3 $ 4 $ $ 5 6. $ 7 $ 8.wav /」 ./*

回答

1

你需要考慮多重性:

rename 's/(\d+)\:(\d+)\:(\d+)\:(\d+)\:(\d+)\:(\d+)-(.*)-(.?).wav/$1$2$3.$4$5$6.$7.$8.wav/' ./* 
2
rename 's/(\d+):(\d+):(\d+):(\d+):(\d+):(\d+)-([^-]+)-([^.]+).wav/$1$2$3.$4$5$6.$7.$8.wav/' ./* 

應該(?)。被使用 - 在你的版本中你總是隻匹配一個數字。另外,不需要逃避:。

1

如果這是你只打算做一次,我會做這種方式:

1)LS的文件到一個新的文件:LS DATADIR> mytmp 2)編輯與mytmp你最喜歡的編輯。 2a刪除不是您關心的數據文件的任何行,如「。」和「..」 2b將每行編輯到shell命令中以重命名該文件。我喜歡emacs,並且 會構建一個鍵盤宏來:剪輯文件名,插入「mv」,插入文件名,插入空格,再次插入文件名,將插入的文件名編輯爲 所需的格式。 2c保存 3)運行sh < mytmp

完成!如果你的編輯器不支持宏或類似的功能,但不保證工作和完成,那麼這種方法不夠優雅乏味。