使用 grep / sed 进行文件名搜索和查找代替?

发布于 2024-10-30 19:41:29 字数 837 浏览 0 评论 0原文

我有一堆图像文件被错误地命名为“[电子邮件受保护] ' 并且它们需要是“[电子邮件受保护]”。它们分布在多个目录中,如下所示:

/images
    [email protected]
    /icons
        [email protected]
    /backgrounds
        [email protected]

How can I use grep + sed to find/replace as need?

I have a bunch of image files that were incorrectly named '[email protected]' and they need to be '[email protected]'. They're spread across multiple directories like so:

/images
    [email protected]
    /icons
        [email protected]
    /backgrounds
        [email protected]

How can I use grep + sed to find/replace as needed?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

×眷恋的温暖 2024-11-06 19:41:29

红宝石(1.9+)

$ ruby -e 'Dir["**/*@x2.png"].each{|x| File.rename( x, x.sub(/@x2/,"@2x") ) }'

Ruby(1.9+)

$ ruby -e 'Dir["**/*@x2.png"].each{|x| File.rename( x, x.sub(/@x2/,"@2x") ) }'
蓝眼睛不忧郁 2024-11-06 19:41:29

查看 qmv 并重命名

find -iname '*.png' -print0 | xargs -0 qmv -d

将启动默认编辑器并允许您交互式地编辑名称

rename s/@x2/@2x/ *.png

Look at qmv and rename

find -iname '*.png' -print0 | xargs -0 qmv -d

will launch your default editor and allow you to interactively edit the names

rename s/@x2/@2x/ *.png
橙幽之幻 2024-11-06 19:41:29

斜杠对我来说看起来像 linuxy/unixoid 。你有找到并重命名吗?

find -name "*@x2*" -execdir rename 's/@x2/@2x/' {} +

rename 值得安装,包含在一些 perl 软件包中。

Slashes look linuxy/unixoid to me. Do you have find and rename?

find -name "*@x2*" -execdir rename 's/@x2/@2x/' {} +

rename is worth installing, comes in some perl-package.

夕色琉璃 2024-11-06 19:41:29

使用 bash 2.x/3.x

#!/bin/bash

while IFS= read -r -d 

使用 bash 4.x

#!/bin/bash

shopt -s globstar

for file in images/**; do
  [[ "$file" == something*@x2*.png ]] && echo mv "$file" "${file/@x2/@2x}"
done

注意:
在每种情况下,我都留下了 echo,以便您可以进行空运行,如果输出足够,请删除 echo

\0' file; do echo mv "$file" "${file/@x2/@2x}" done < <(find images/ -type f -name "something*@x2*.png" -print0)

使用 bash 4.x


注意:
在每种情况下,我都留下了 echo,以便您可以进行空运行,如果输出足够,请删除 echo

With bash 2.x/3.x

#!/bin/bash

while IFS= read -r -d 

With bash 4.x

#!/bin/bash

shopt -s globstar

for file in images/**; do
  [[ "$file" == something*@x2*.png ]] && echo mv "$file" "${file/@x2/@2x}"
done

Note:
In each case I left in an echo so you can do a dry-run, remove the echo if the output is sufficient

\0' file; do echo mv "$file" "${file/@x2/@2x}" done < <(find images/ -type f -name "something*@x2*.png" -print0)

With bash 4.x


Note:
In each case I left in an echo so you can do a dry-run, remove the echo if the output is sufficient

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文