gpt4 book ai didi

bash - 如何在查找表达式中使用带有 sed 的文件名

转载 作者:行者123 更新时间:2023-11-29 09:34:50 24 4
gpt4 key购买 nike

试图回答Using Bash/Perl to modify files based on each file's name我以不知道如何一起使用 findsed 结束。

假设有一个特定的文件结构,我们想在其中更改一行,附加文件名。

如果这是一个普通的 for 循环,我们会这样做:

for file in dir/*
do
sed -i "s/text/text plus $file/g" $file
done

但是假设我们想使用find 来更改所有子目录中的文件。在这种情况下,我会使用...

find . -type f -exec sed -i "s/text/text plus {}/g" {} \;
^
it does not like this part

但是 sed 中的这些 {} 不被接受,我收到错误

sed: -e expression #1, char 20: unknown option to `s'

我发现了一些类似的问题 ( 1 ),但在这种情况下无法概括到足以让我理解它。

我相信你们会为此找到一个很好的解决方案。谢谢!

最佳答案

我真的认为问题是你的文件名包含一个 / 这就是为什么 sed 认为它启动了选项字符串。

在您的 sed 命令中将 / 替换为 @ 即可。

我在 Linux BASH 上试了一下,它运行得很好

find . -type f -exec sed -i -e "s@text@test plus {}@g" {} \;

关于bash - 如何在查找表达式中使用带有 sed 的文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17788947/

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