用debian重命名一堆文件

时间:2009-10-27 20:36:02

标签: regex linux debian rename

我需要使用以下格式重命名数千个文件。 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 /”   ./*

3 个答案:

答案 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

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