gpt4 book ai didi

linux递归地用文件中的路径替换路径

转载 作者:太空宇宙 更新时间:2023-11-04 05:15:54 26 4
gpt4 key购买 nike

给定一个名为 FOO 的主目录,其中有许多子目录,我想转到每个子目录,找到路径:

/mango/pears/peanuts/butter/ 

/mango/pears 替换为 /supplier

我知道 sed 是我正在寻找的东西,但我无法弄清楚:

cd /FOO
sed -i 's|/mango/pears|/supplier|g' $(find . -type f)

有什么想法吗?这个问题并不像 this 那样寻求重命名文件。

最佳答案

要查找 FOO 中包含/mango/pears/peanuts/butter/的每条路径,您可以使用:

find /FOO -path "*/mango/pears/peanuts/butter/*"

如果您想修改结果列表,您可以通过 sed 管道输出(但不带 -i,这仅对要就地更改的文件有意义):

find /FOO -path "*/mango/pears/peanuts/butter/*" -type f | sed 's|/mango/pears|/supplier|g' 

Sed -i 适用于 sed 的每个结果,但会更改文件内的此类路径。这可能适用于您的命令,但容易受到文件名中空格的影响。相反,您应该使用 -exec 参数:

find /FOO -path "*/mango/pears/peanuts/butter/*" -type f -exec sed -i  's|/mango/pears|/supplier|g' {} ";"

关于linux递归地用文件中的路径替换路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49538551/

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