簡體   English   中英

如何在文件數組上使用xargs

[英]How to use xargs on an array of files

我想將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:我不知道為什么您說您的代碼不起作用……它應該起作用(前提是您的文件名沒有空格和引號); 也許您沒有顯示完整的代碼?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM