重命名Linux目录中的所有文件

重命名Linux目录中的所有文件

可能重复:
Linux 中批量重命名文件

我的 Linux 系统中某个目录中有 1000 个文件的列表,如下所示:

01-Star_Network.en.srt  
02-Subsets.en.srt  
03-Function_Comparision.en.srt

我想从所有文件中删除 .en,并将其重命名为:

01-Star_Network.srt  
02-Subsets.srt  
03-Function_Comparision.srt

有没有 bash、python、java 或 PHP 脚本可以执行此操作?

答案1

只需使用此命令:

rename 's/\.en\.srt$/.srt/' *.srt

renamePerl rename,它的默认设置是Ubuntu

$ LANG=C update-alternatives --display rename
rename - auto mode
  link currently points to /usr/bin/prename
/usr/bin/prename - priority 60
  slave rename.1.gz: /usr/share/man/man1/prename.1.gz
Current 'best' version is '/usr/bin/prename'.

它是随perl Ubuntu包本身一起安装的。

答案2

以下命令可以实现该功能:

find . -name '*.en.srt' | sed 'h; s/.en.srt$/.srt/; H; x; s/\n/ /' | xargs -l mv
  • find 查找需要重命名的文件
  • sed 编辑文件名
  • xargs 为每个文件名调用 mv 命令来完成这项工作

要首先检查您正在做什么,请尝试在 mv 之前添加“echo”,如下所示:

find . -name '*.en.srt' | sed 'h; s/.en.srt$/.srt/; H; x; s/\n/ /' | xargs -l echo mv

答案3

renamefromutil-linux也应该这样做:

rename .en.srt .srt *.en.srt

相关内容