如何批量移动前一年到文件名的末尾?

Rya*_*yan 3 regex unix bash shell rename

我有一个文件列表(数千个),如下所示:

/path/2010 - filename.txt
/path/2011 - another file name.txt
Run Code Online (Sandbox Code Playgroud)

始终遵循以下模式: #### - string.txt

我需要将它们更改为如下所示:

/path/filename (2010).txt
/path/another file name (2011).txt
Run Code Online (Sandbox Code Playgroud)

如何使用bash,shell,terminal等快速完成此操作?

kev*_*kev 5

尝试rename命令:

rename -n 's/(.*) - (.*)(\.txt)/$2 ($1)$3/' *.txt
Run Code Online (Sandbox Code Playgroud)

-n(--no-act)选项用于预览.
删除-n以执行替换.

  • 如果`*.txt` 扩展到一个命令行的文件太多,`find /path -name '*.txt' -print0 | xargs -0 重命名 -n ...` (2认同)