gpt4 book ai didi

bash - 搜索+替换文件名中的字符串

转载 作者:行者123 更新时间:2023-11-29 08:43:47 25 4
gpt4 key购买 nike

如何使用 bash 搜索递归包含在目录中的所有文件名(包括文件夹)中所有出现的子字符串“foo”,并将它们替换为“bar”?

例如,如果当前结构如下所示:

-foo_test
- fooo.txt
- xfoo
- yfoo.h
- 1foo.c

运行 bash 脚本后应该是这样的:

-bar_test
- baro.txt
- xbar
- ybar.h
- 1bar.c

最佳答案

此处显示的两种变体都可以在 OP 测试结构上正常工作:

find . -depth -name '*foo*' -execdir bash -c 'mv -i "$1" "${1//foo/bar}"' bash {} \;

或者,如果您有大量文件并希望它运行得更快:

find . -depth -name '*foo*' -execdir bash -c 'for f; do mv -i "$f" "${f//foo/bar}"; done' bash {} +

编辑:正如评论中所指出的,我之前的回答使用的是 find 命令,该命令未使用 execdir 选项并使用 rename 在名称中包含 foo 的目录中重命名文件时会出现问题。正如建议的那样,我已将查找命令更改为使用 -execdir,并且我已使用 rename 命令删除了变体,因为它是一个非标准命令。

关于bash - 搜索+替换文件名中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7171659/

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