我需要使用以下格式重命名数千个文件。 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 /” ./*
答案 0 :(得分:2)
rename 's/(\d+):(\d+):(\d+):(\d+):(\d+):(\d+)-([^-]+)-([^.]+).wav/$1$2$3.$4$5$6.$7.$8.wav/' ./*
应该使用- 在您的版本中,您始终只匹配一位数。另外,无需逃避:。
答案 1 :(得分:1)
你需要考虑多重性:
rename 's/(\d+)\:(\d+)\:(\d+)\:(\d+)\:(\d+)\:(\d+)-(.*)-(.?).wav/$1$2$3.$4$5$6.$7.$8.wav/' ./*
答案 2 :(得分:1)
如果这只是你要做的一次,我会这样做:
1)将文件放入新文件:ls datadir> mytmp 2)用您喜欢的编辑器编辑mytmp。 2a删除任何不是你关心的数据文件的行,比如“。”和“......” 2b将每行编辑成shell命令以重命名该文件。我喜欢emacs,和 将构建一个键盘宏:剪切文件名,插入“mv”,插入 filename,插入空格,再次插入文件名,编辑插入的文件名 所需的格式。 2c保存 3)运行sh< mytmp
完成!如果您的编辑器不支持宏或类似的功能,但保证工作和完成,那就不优雅,乏味。