使用grep -lr输出将文件添加到tar

But*_*kus 4 linux ubuntu grep centos tar

在UBUNTU和CENTOS.

我有一些我想基于其内容tar的文件.

$ grep -rl "123.45" .
Run Code Online (Sandbox Code Playgroud)

以这种格式返回大约10个文件的列表:

./somefolder/someotherfolder/somefile.txt
./anotherfolder/anotherfile.txt
Run Code Online (Sandbox Code Playgroud)

等等...

我想tar.gz所有这些.

我试过了:

$ grep -rl "123.45" . | tar -czf files.tar.gz
Run Code Online (Sandbox Code Playgroud)

不行.这就是我在这里的原因.有任何想法吗?谢谢.

只是尝试这样做,它在Ubuntu的工作,但在CentOS的我得到"焦油:02:无法统计:没有这样的文件或目录".

$ tar -czf test.tar.gz `grep -rl "123.45" .`
Run Code Online (Sandbox Code Playgroud)

如果其他人有更好的方式,请告诉我.至少在Ubuntu上面这个很好用.

Leo*_*sky 8

像这样:

 ... | tar -T - -czf files.tar.gz
Run Code Online (Sandbox Code Playgroud)

"-T - "导致tar从stdin读取文件名.第二个减号代表stdin. -