a/a.txt $ echo "B" >-6ren">
gpt4 book ai didi

sed 无法正确处理多个输入文件

转载 作者:行者123 更新时间:2023-12-04 01:30:35 25 4
gpt4 key购买 nike

sed -i 在就地编辑之前(按预期)创建子目录中所有文件的备份,但它实际上并没有编辑子目录中的文件。

$ mkdir -p a/b
$ echo "A" > a/a.txt
$ echo "B" > a/b/b.txt

现在我有两个文本文件,一个位于 a 中,另一个位于 a 的子目录中

$ sed -i.bac "1s/^/PREPENDED /" a/**/*.txt

为两者创建备份:

$ find a  
a
a/a.txt
a/a.txt.bac
a/b
a/b/b.txt
a/b/b.txt.bac

仅编辑a.txt:

$ cat a/a.txt   
PREPENDED A

$ cat a/b/b.txt
B

我正在使用 ZSH(因此我有 globstar 支持)并且我使用的是 Mac。

为什么会发生这种情况以及如何解决它?

最佳答案

发生这种情况是因为您的 sed 调用只有一行 1,而该行恰好位于 a.txt 中。如果您希望它对每个文件执行此操作,那么您需要多次调用 sed。

for f in a/**/*.txt
do
sed ... "$f"
done

关于sed 无法正确处理多个输入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24565257/

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