我需要使用以下格式重命名数千个文件。 2008:09:18:17:45:48-alfanumeric-alfanumeric.wav第一部分是约会。

实施例。的 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 /”   ./*

有帮助吗?

解决方案

你需要考虑多重性:

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

其他提示

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

- 在您的版本中,您始终只匹配一位数。另外,无需逃避:。

如果这只是你要做的一次,我会这样做:

1)将文件放入新文件:ls datadir <!> gt; mytmp 2)用您喜欢的编辑器编辑mytmp。   2a删除任何不是您关心的数据文件的行,例如<!> quot;。<!> quot;和<!> quot; .. <!> quot;   2b将每行编辑成shell命令以重命名该文件。我喜欢emacs,和      将构建一个键盘宏来:剪切文件名,插入<!>“; mv <!>”;插入      filename,插入空格,再次插入文件名,编辑插入的文件名      所需的格式。   2c保存 3)运行sh <!> lt; mytmp

完成!如果您的编辑器不支持宏或类似的功能,但保证工作和完成,那就不优雅,乏味。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top