gpt4 book ai didi

arrays - 如何在文件数组上使用 xargs

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:34:46 26 4
gpt4 key购买 nike

我想将 find 命令的输出存储在一个变量中,并多次使用它,因为 find 命令会消耗时间。

abc=`find . -maxdepth 3 -type f -name "abc.txt"`

echo "${abc[*]}" | xargs grep -l "somestring1"
echo "${abc[*]}" | xargs grep -l "somestring2"
echo "${abc[*]}" | xargs grep -l "somestring3"

但它只查询数组 abc 的第一个元素。

最佳答案

由于您使用的是非标准 -maxdepth,我假设非标准 find 处理 -print0 谓词,因此安全地构建一个数组:

abc=()
while IFS= read -r -d '' f; do
abc+=( "$f" )
done < <(find . -maxdepth 3 -type f -name "abc.txt" -print0)

你有一个数组 abc

现在,您可以安全地将数组 abc 作为参数传递给 grep:

grep -l "somestring1" "${abc[@]}"
grep -l "somestring2" "${abc[@]}"
grep -l "somestring3" "${abc[@]}"

注意 1. 在您的代码中,abc 不是数组。

注意 2. 我不明白为什么你说你的代码不起作用……它应该能起作用(前提是你有没有空格和引号的漂亮文件名);也许您没有显示完整代码?

关于arrays - 如何在文件数组上使用 xargs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37985798/

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