Bash
重命名文件在第四個和第六個字元後添加破折號
我有一些文件,例如:
20150716_something-here 20150716_something-heretoo 20150716_something-hereaswell
他們需要重命名為
2015-07-16_something-here 2015-07-16_something-heretoo 2015-07-16_something-hereaswell
與
sed
:LC_ALL=C sed -e 's/\([0-9]\{4\}\)\([0-9]\{2\}\)\([0-9]\{2\}\)/\1_\2_\3/' <file
雖然
rename
是一個非常強大的工具,但我通常更喜歡mmv
(多次移動)實用程序的簡單性:mmv '????????_*' '#1#2#3#4-#5#6-#7#8_#9'
搜尋模式中的
?
代表單個字元, 代表*
任意長的字元序列。在替換模式中,every#<number>
代表一個對應的?
或*
在搜尋模式中。除了?
and之外*
,還mmv
支持括號內的字元範圍(如[a-f]
)。(
mmv
將在開始工作之前測試重命名中的任何衝突,因此您不會因覆蓋而失去文件。)