我正在搜索包含 string1 和 string2 的每個 txt 檔案
grep -rnE --include='*.txt' 'string1|string2'
現在我想將所有這些檔案放入一個 zip 檔案中。
謝謝
編輯 @anubhava 建議的這個腳本對我有用
grep --null -rlE --include='*.txt' 'string1|string2' | xargs -0 -I {} zip test.zip '{}'
uj5u.com熱心網友回復:
您可以使用-l選項 ingrep僅輸出檔案名并將其通過管道傳輸xargs到zip為每個發現的罰款創建:
grep --null -rlE --include='*.txt' 'string1|string2' |
xargs -0 -I {} zip '{}'.zip '{}'
注意使用in--null選項來處理帶有空格、特殊字符的檔案名。-0xargs
要創建包含每個匹配檔案的單個 zip 檔案,請使用:
grep --null -rlE --include='*.txt' 'string1|string2' |
xargs -0 zip test.zip
uj5u.com熱心網友回復:
因為您想要包含 string1和string2 的檔案
$ files=""; for i in *.txt; do if grep -q string1 $i && grep -q string2 $i; then files="$files $i"; fi; done
$ zip files.zip ${files}
清潔版
files="";
for i in *.txt;
do
if grep -q string1 $i && grep -q string2 $i; then
files="$files $i";
fi;
done
zip files.zip ${files}
演示:
$ cat SO/file1.txt
there is string1
there is also string2
$
$ cat SO/file2.txt
there is just string1
$
$ cat SO/file3.txt
here we have both string1 and string2
$
$
$ files="";
$ for i in SO/*.txt;
> do
> if grep -q string1 $i && grep -q string2 $i; then
> files="$files $i";
> fi;
> done
$ zip files.zip ${files}
adding: SO/file1.txt (deflated 26%)
adding: SO/file3.txt (deflated 11%)
$
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/377573.html
