在bash shell脚本中,如何重命名多个文件,仅保留数字和原始文件名的扩展名?

安德烈·谢万特斯(AndréShevantes)

我有一个包含一堆文件的目录,其名称如下:

  • 通用名称-dd -01 _.txt
  • 通用名称-dd -02 _.txt
  • 通用名称-dd -03 _.txt
  • 通用名称-dd -04 _.txt

我想重命名所有这些,只保留数字和扩展名,如下所示:

  • 01.txt
  • 02.txt
  • 03.txt
  • 04.txt

如何使用Shell脚本执行此操作?

斯帕霍克

Perl重命名

我会使用(perl-)重命名。发行版提供了两种类型的重命名,因此您可以检查是否安装了Perl版本的重命名

$ rename --version
perl-rename 1.9

将其运行-n以将命令测试为“空运行”。

$ rename 's/[^0-9]*([0-9]*).*/\1.txt/' * -n
generic name- dd -01 _.txt -> 01.txt
generic name- dd -02 _.txt -> 02.txt
generic name- dd -03 _.txt -> 03.txt
generic name- dd -04 _.txt -> 04.txt

当您满意时,运行命令本身。

$ rename 's/[^0-9]*([0-9]*).*/\1.txt/' *

解释

  • rename 's/foo/bar/' *:重命名的所有文件(*),取代了正则表达式foobar
  • [^0-9]*([0-9]*).*:匹配所有非数字字符[^0-9]*,后跟数字字符,并包含在“捕获组”中([0-9]*),然后是其余字符.*这将匹配整个文件名。
  • \1.txt:将文件名替换为捕获的组\1,并附加.txt

其他改名

如果您安装了更简单的重命名,则会看到类似这样的内容。

$ rename --version
rename from util-linux 2.33.1

在这种情况下,可以使用以下两个命令:

$ rename 'generic name- dd -' '' *
$ rename ' _' '' *

但我强烈建议改为学习perl-rename。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在bash终端中从%f获取不带扩展名的文件名?

来自分类Dev

Bash中的“欺骗”文件扩展名

来自分类Dev

Bash命令可以在多个目录中复制并重命名相同的文件名?

来自分类Dev

Bash oneliner重命名文件名

来自分类Dev

在Bash中搜索包含特定字符串的特定扩展名文件名

来自分类Dev

重命名目录中的特定文件扩展名,使其与bash中的另一个文件匹配

来自分类Dev

Bash脚本重命名文件扩展名

来自分类Dev

Bash Shell脚本从文件名中查找丢失的文件

来自分类Dev

Bash重命名具有重复文件名的文件

来自分类Dev

如何在bash中引用glob扩展文件名?

来自分类Dev

如何在bash中检索文件名或扩展名

来自分类Dev

通过Bash重命名和转换文件名

来自分类Dev

如何在bash终端中从%f获取不带扩展名的文件名?

来自分类Dev

查找,xargs和mv:使用双引号,扩展名和bash优先级问题重命名文件

来自分类Dev

如何使用正则表达式从bash中的文件名中仅选择数字

来自分类Dev

bash中的Expect脚本的文件名扩展

来自分类Dev

Bash Shell脚本删除文件名中的GUID

来自分类Dev

用bash重命名多个文件名

来自分类Dev

Bash:重命名文件名开头

来自分类Dev

Bash:重命名文件扩展名,出现错误

来自分类Dev

重命名文件,删除文件名bash脚本的一部分

来自分类Dev

重命名目录中的特定文件扩展名,使其与bash中的另一个文件匹配

来自分类Dev

在Bash脚本中解析文件名

来自分类Dev

在bash shell的两面列出没有扩展名的文件,但保留原始文件

来自分类Dev

重命名文件并将扩展名保留在bash中

来自分类Dev

传递给 bash 脚本的文件名中的多个空格

来自分类Dev

Bash 文件扩展名

来自分类Dev

bash重命名不同目录中文件名的部分

来自分类Dev

如何通过移动/替换字符并在文件名中转换日期格式来重命名bash中的多个文件?

Related 相关文章

  1. 1

    如何在bash终端中从%f获取不带扩展名的文件名?

  2. 2

    Bash中的“欺骗”文件扩展名

  3. 3

    Bash命令可以在多个目录中复制并重命名相同的文件名?

  4. 4

    Bash oneliner重命名文件名

  5. 5

    在Bash中搜索包含特定字符串的特定扩展名文件名

  6. 6

    重命名目录中的特定文件扩展名,使其与bash中的另一个文件匹配

  7. 7

    Bash脚本重命名文件扩展名

  8. 8

    Bash Shell脚本从文件名中查找丢失的文件

  9. 9

    Bash重命名具有重复文件名的文件

  10. 10

    如何在bash中引用glob扩展文件名?

  11. 11

    如何在bash中检索文件名或扩展名

  12. 12

    通过Bash重命名和转换文件名

  13. 13

    如何在bash终端中从%f获取不带扩展名的文件名?

  14. 14

    查找,xargs和mv:使用双引号,扩展名和bash优先级问题重命名文件

  15. 15

    如何使用正则表达式从bash中的文件名中仅选择数字

  16. 16

    bash中的Expect脚本的文件名扩展

  17. 17

    Bash Shell脚本删除文件名中的GUID

  18. 18

    用bash重命名多个文件名

  19. 19

    Bash:重命名文件名开头

  20. 20

    Bash:重命名文件扩展名,出现错误

  21. 21

    重命名文件,删除文件名bash脚本的一部分

  22. 22

    重命名目录中的特定文件扩展名,使其与bash中的另一个文件匹配

  23. 23

    在Bash脚本中解析文件名

  24. 24

    在bash shell的两面列出没有扩展名的文件,但保留原始文件

  25. 25

    重命名文件并将扩展名保留在bash中

  26. 26

    传递给 bash 脚本的文件名中的多个空格

  27. 27

    Bash 文件扩展名

  28. 28

    bash重命名不同目录中文件名的部分

  29. 29

    如何通过移动/替换字符并在文件名中转换日期格式来重命名bash中的多个文件?

热门标签

归档