all_slides_with_separators_in_betwee-6ren">
gpt4 book ai didi

shell - 我怎样才能让 xargs 对输入做一些事情,然后再做另一件事?

转载 作者:行者123 更新时间:2023-12-04 22:00:15 26 4
gpt4 key购买 nike

我在 zsh 中。

我想做这样的事情:

找到 . -iname *.md | xargs cat && echo "---"> all_slides_with_separators_in_between.md

当然,这会覆盖所有幻灯片,然后在末尾而不是在每张幻灯片之后附加一个“---”。

有 xargs 方法吗?我可以用一些内联函数或 do block 替换 cat && echo "---" 吗?


很奇怪,当我创建一个文件 cat---.sh 内容

cat $1
echo ---

然后运行

找到 . -iname *.md | xargs ./cat---.sh

它只对查找的第一个结果执行。
将 cat---.sh 替换为 cat,它会在两个文件上运行。

最佳答案

这里根本不需要使用xargs。以下是一种适当的偏执方法(对带有空格的文件、带有换行符的文件、名称中带有文字反斜杠的文件等具有鲁棒性):

while IFS= read -r -d '' filename; do
printf '---\n'
cat -- "$filename"
done < <(find . -iname '*.md' -print0) >all_slides_with_separators.md

但是——您甚至不需要它:find 可以自己完成所有工作,同时打印分隔符 调用 cat!

find . -iname '*.md' -printf '---\n' -exec cat -- '{}' ';' >all_slides_with_separators.md

关于shell - 我怎样才能让 xargs 对输入做一些事情,然后再做另一件事?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32144214/

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