gpt4 book ai didi

regex - 如何在 Linux 的 find 命令中对 {} 参数应用正则表达式

转载 作者:太空狗 更新时间:2023-10-29 12:16:15 27 4
gpt4 key购买 nike

我想更改某类文件的文件名。它应该递归运行。我几乎明白了,但不知道如何使用参数 {}(绝对路径)。

      find $PWD -type f -name '*.jpg' -exec echo " {} " \;

例如,我想使用 reg 更改扩展名。表达式而不是命令重命名等。有时我需要新名称将其传递给函数,因此重命名在这里不适用。应该可以像在 for-case 中使用参数 $each 一样使用参数:

      for each in /* do echo "${each\./\}.png" done

如何在参数 {} 上应用正则表达式,例如:“${each\./\}.png”?

最佳答案

我发现 basenamefind 一起使用时行为不当的解决方法:

find $PWD -type f -name '*.jpg' -exec sh -c 'echo "$(basename "$0" .jpg).png"' {} \;

sh 强制使用您的 /bin/sh 文件解释以下命令。 -c 选项指定参数作为字符串传递(此处,您的参数 $0{})。

如果你有以下文件:

/home/username/image1.jpg
/home/username/Documents/image2.jpg

这将输出:

image1.png
image2.png

编辑

如果你想保留完整路径,你可以使用这个:

find $PWD -type f -name '*.jpg' -exec sh -c 'echo "${0%%.jpg}".png' {} \;

这将输出:

/home/username/image1.png
/home/username/Documents/image2.png

关于regex - 如何在 Linux 的 find 命令中对 {} 参数应用正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23733126/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com