更改 100 多个文件的文件名

更改 100 多个文件的文件名

因此,我的目录中有一个文件夹,其中包含大约 400-500 个文件(java,cpp,xml 等),每个文件都有一个共同的名称,例如

xml_1_ubuntu.xml
java_1_ubuntu.java
cpp_1_ubuntu.cpp
...

我想将ubuntu其名称中的(无论其扩展名/文件类型如何)更改为notubuntu,以便工作目录将包含如下文件

xml_1_notubuntu.xml
java_1_notubuntu.java
cpp_1_notubuntu.cpp
...

有什么办法我可以做到这一点吗?

答案1

是的,使用常规正则表达式的重命名命令:

rename -n 's/_ubuntu/_notubuntu/' *

-n使其成为一次试运行。如果这样做能达到您的要求,请将其删除。

答案2

我会用rename

rename -n 's@_(ubuntu\.)@_not$1@' *_ubuntu.*

bash您也可以简单地执行此操作:

for f in *_ubuntu.* ; do
  base="${f%%_ubuntu.*}"
  ext="${f##*_ubuntu.}"
  mv "$f" "${base}_notubuntu.${ext}"
done

答案3

使用(来自Universe 存储库中的mmv包)mmv

mmv -n -- '*_ubuntu*' '#1_notubuntu#2'

如果你有权访问zshshell,你可以使用zmv非常相似的语法

autoload zmv
zmv -n -- '(*)_ubuntu(*)' '$1_notubuntu$2'

或者更简洁地说

zmv -n -- '(*)_(ubuntu*)' '$1_not$2'

在所有情况下,-n一旦您对转换结果满意,就将其删除。

答案4

没有rename命令:

ls -1 | awk '{ name=$0; gsub(/ubuntu/,"notubuntu",name); print "mv " $0 " " name }' | bash

如果没有| bash,它只会显示命令而不实际执行它们(试运行)。

相关内容