通过子字符串文件名批量重命名文件

科尔·艾诺(Korr Iamnot)

我有档案

..
00016_0912RP10R6_RampMotorway9_0912RP10R6_13.646852_100.687103.jpg
00017_0912RP10R6_RampMotorway9_0912RP10R6_13.646956_100.686897.jpg
00018_0912RP10R6_RampMotorway9_0912RP10R6_13.647067_100.686684.jpg
...

我想拥有

00016.jpg
00017.jpg
00018.jpg

遍历子文件夹并将其重命名的最佳linux命令是什么?

库萨兰达

使用find

find . -type f -name '*_*.jpg' -exec sh -c '
    for pathname do
        newname=${pathname##*/}
        newname="${pathname%/*}/${newname%%_*}.jpg"
        printf "Would move %s to %s\n" "$pathname" "$newname"
        # mv -i "$pathname" "$newname"
    done' sh {} +

这将在当前目录中或目录之下找到其名称与给定模式匹配的所有常规文件的路径名。对于这些路径名的批处理,将执行一个简短的Shell脚本,该脚本循环遍历给定的路径名​​并重命名文件(出于安全考虑,实际重命名已注释掉)。

给定一个类似的路径名./a/b/c/foo0_some_other_bits.jpg,shell脚本将./a/b/c/foo0.jpg通过首先删除目录(产生foo0_some_other_bits.jpg),然后删除第一个_字符之后的所有内容,然后再次添加目录,将其转换为。删除并替换路径名的目录位,以防万一它也恰好包含一个或几个_字符。这是使用标准参数扩展完成的。

在以下位置使用globstarshell选项bash

shopt -s globstar   # use "set -o globstar" in ksh93, or remove completely in zsh
for pathname in ./**/*.jpg; do
    [ -f "$pathname" ] || continue
    newname=${pathname##*/}
    newname="${pathname%/*}/${newname%%_*}.jpg"
    printf "Would move %s to %s\n" "$pathname" "$newname"
    # mv -i "$pathname" "$newname"
done

这与上面的find命令完全等效,唯一的区别是它找不到隐藏的名称(shopt -s dotglob为此添加名称)。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何通过交换文件名中的子字符串来批量重命名文件?

来自分类Dev

Python使用子字符串最佳做法重命名文件名

来自分类Dev

如何匹配文件名中的字符串并根据字符串重命名文件?

来自分类Dev

批处理文件重命名脚本交换文件名中的子字符串?

来自分类Dev

在bash中重命名文件时重新排序文件名中的子字符串?

来自分类Dev

根据部分文件夹中的部分文件名匹配,重命名文件名的子字符串

来自分类Dev

根据同一文件夹中的部分文件名匹配重命名文件名的子字符串

来自分类Dev

使用从文件名中提取的字符串重命名文件

来自分类Dev

如何通过替换文件名中的字符串来重命名多个文件?该字符串包含“#”

来自分类Dev

文件名重命名 - 子串日期删除

来自分类Dev

如何使用哈希中的字符串值重命名文件名?

来自分类Dev

使用sed从文件名中移动字符串或使用重命名将其重命名

来自分类Dev

通过在文件名的前缀号上添加+1来批量重命名文件

来自分类Dev

根据包含的文件名批量重命名zip文件

来自分类Dev

如果文件名缺少字符串,请使用批处理文件重命名文件

来自分类Dev

在文件名前批量添加字符串

来自分类Dev

在文件名前批量添加字符串

来自分类Dev

如何使用匹配的字符串递归重命名文件夹名和文件名

来自分类Dev

Windows批量通过CLI重命名中间文件名吗?

来自分类Dev

通过删除分隔的子字符串来重命名文件

来自分类Dev

通过删除子字符串重命名文件夹

来自分类Dev

批量重命名文件名,包括空格和模式

来自分类Dev

在CentOS 7中批量重命名JPG文件名

来自分类Dev

批量重命名文件名,保留ext?

来自分类Dev

在Windows 10上批量重命名文件名

来自分类Dev

查找文件名中包含空格和特定字符串的文件,并将其重命名

来自分类Dev

使用FIND和MV重命名文件。删除找到的字符串,然后将其放在文件名之前?

来自分类Dev

批量重命名,添加额外的“。” 递归地位于文件名中位置3处的字符

来自分类Dev

使用bash在连字符之间批量重命名文件名

Related 相关文章

  1. 1

    如何通过交换文件名中的子字符串来批量重命名文件?

  2. 2

    Python使用子字符串最佳做法重命名文件名

  3. 3

    如何匹配文件名中的字符串并根据字符串重命名文件?

  4. 4

    批处理文件重命名脚本交换文件名中的子字符串?

  5. 5

    在bash中重命名文件时重新排序文件名中的子字符串?

  6. 6

    根据部分文件夹中的部分文件名匹配,重命名文件名的子字符串

  7. 7

    根据同一文件夹中的部分文件名匹配重命名文件名的子字符串

  8. 8

    使用从文件名中提取的字符串重命名文件

  9. 9

    如何通过替换文件名中的字符串来重命名多个文件?该字符串包含“#”

  10. 10

    文件名重命名 - 子串日期删除

  11. 11

    如何使用哈希中的字符串值重命名文件名?

  12. 12

    使用sed从文件名中移动字符串或使用重命名将其重命名

  13. 13

    通过在文件名的前缀号上添加+1来批量重命名文件

  14. 14

    根据包含的文件名批量重命名zip文件

  15. 15

    如果文件名缺少字符串,请使用批处理文件重命名文件

  16. 16

    在文件名前批量添加字符串

  17. 17

    在文件名前批量添加字符串

  18. 18

    如何使用匹配的字符串递归重命名文件夹名和文件名

  19. 19

    Windows批量通过CLI重命名中间文件名吗?

  20. 20

    通过删除分隔的子字符串来重命名文件

  21. 21

    通过删除子字符串重命名文件夹

  22. 22

    批量重命名文件名,包括空格和模式

  23. 23

    在CentOS 7中批量重命名JPG文件名

  24. 24

    批量重命名文件名,保留ext?

  25. 25

    在Windows 10上批量重命名文件名

  26. 26

    查找文件名中包含空格和特定字符串的文件,并将其重命名

  27. 27

    使用FIND和MV重命名文件。删除找到的字符串,然后将其放在文件名之前?

  28. 28

    批量重命名,添加额外的“。” 递归地位于文件名中位置3处的字符

  29. 29

    使用bash在连字符之间批量重命名文件名

热门标签

归档