gpt4 book ai didi

sed - 奇怪的 Sed 错误消息

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

bash-3.2$ sed -i.bakkk -e "s#/sa/#/he/#g" .*
sed: .: in-place editing only works for regular files

我尝试将文件夹中每个点文件中的每个/sa/替换为/he/。我怎样才能让它工作?

最佳答案

使用find -type f仅查找与名称匹配的文件 .*并排除目录 ... . -maxdepth 1防止find从递归到子目录。然后您可以使用 -exec执行sed命令,使用 {}占位符告诉 find文件名应该放在哪里。

find . -type f -maxdepth 1 -name '.*' -exec sed -i.bakkk -e "s#/sa/#/he/#g" {} +

使用 -exec优于使用反引号或 xargs因为它甚至适用于包含空格甚至换行符的奇怪文件名——是的, "foo bar\nfile"是一个有效的文件名。荣誉奖是 find -print0 | xargs -0
find . -type f -maxdepth 1 -name '.*' -print0 | xargs -0 sed -i.bakkk -e "s#/sa/#/he/#g"

这同样安全。不过,它有点冗长,而且不太灵活,因为它只适用于文件名在末尾的命令(诚然,99% 的命令)。

关于sed - 奇怪的 Sed 错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1180172/

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