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

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!

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!