Bash

重命名文件在第四個和第六個字元後添加破折號

  • November 20, 2018

我有一些文件,例如:

20150716_something-here
20150716_something-heretoo
20150716_something-hereaswell

他們需要重命名為

2015-07-16_something-here
2015-07-16_something-heretoo
2015-07-16_something-hereaswell

我嘗試使用命令perl 實現(請參閱我對已接受答案的評論)但我沒有成功。rename

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將在開始工作之前測試重命名中的任何衝突,因此您不會因覆蓋而失去文件。)

引用自:https://unix.stackexchange.com/questions/284282