我需要查找具有特定字符串的所有文件并对其进行tar。我使用了以下语法,但它不起作用。
find . -iname '*.log' -exec grep -l 'abcdef' {} tar mytar.tar.gz -T - \;
我不想使用下面的管道语法(出于特定原因)
find . -name '*.log' | xargs grep -l 'abcdef' | tar Mytar.tar.gz -T -
我需要使用find with exec和grep每个文件并对结果文件列表进行tar。
由于
答案 0 :(得分:2)
您可以使用grep -lR --null
管道xargs -0 tar ...
进行此操作:
grep -lR --null --include='*.log' 'abcdef' . | xargs -0 tar cvzf mytar.tar.gz -T -
答案 1 :(得分:1)
Process substitution
来救援:
tar -czf mytar.tar.gz -T <(find . -type f -iname '*.log' -exec grep -l 'abcdef' {} +)