正则表达式:提取并移动字符串中的模式

问题描述:

I am trying to see if I can use a regular expression to rename a long list of files in a directory.

That is, the current file name is in the format below:

filename_[2013_05_30].mp4

And I'd like to rename it to the following format:

[2013_05_30]_filename.mp4

I am using Linux (Ubuntu) and can use either shell script or php.

Thanks!

我正在尝试查看是否可以使用正则表达式重命名目录中的长文件列表。

也就是说,当前文件名的格式如下: p>

  filename_ [2013_05_30] .mp4 
  code>  
 
 

我想将其重命名为以下格式: p>

  [2013_05_30] _filename.mp4 
  code>  
 
 

我使用的是Linux(Ubuntu),可以使用shell脚本或php。 p>

谢谢! p> div>

Backup your files before.

Test with this line:

ls *].mp4 | sed 's/^\(.*\)_\(\[[0-9_]*]\)\.mp4$/mv & \2_\1.mp4/'

And when you are sure, add | sh:

ls *].mp4 | sed 's/^\(.*\)_\(\[[0-9_]*]\)\.mp4$/mv & \2_\1.mp4/' | sh

here are a couple of different ways you can accomplish renaming files in a linux shell script(including regex) from unix stackexchange: https://unix.stackexchange.com/questions/7161/copy-rename-multiple-files-using-regular-expression-shell-script

I hope this helps!