在UBUNTU和CENTOS中。使用grep -lr輸出將文件添加到tar
我有一些文件,我想基於它們的內容進行焦油。
$ grep -rl "123.45" .
返回的約10個文件列表,在這樣的格式:
./somefolder/someotherfolder/somefile.txt
./anotherfolder/anotherfile.txt
等等
我要tar.gz的全部。
我想:
$ grep -rl "123.45" . | tar -czf files.tar.gz
不工作。這就是我來這裏的原因。有任何想法嗎?謝謝。
剛剛嘗試過這個,它在Ubuntu中工作,但在CentOS中,我得到「tar:02:無法統計:沒有這樣的文件或目錄」。
$ tar -czf test.tar.gz `grep -rl "123.45" .`
如果其他人有更好的辦法,讓我知道。至少,上面的一個在Ubuntu中非常有用。
我在問題的底部添加了什麼解決方案? –
@ButtleButkus - back tick字符大部分與'$()'語法相同,它們都是命令擴展的形式。有一些小的差異,我個人比較喜歡'$()',但是你的解決方案適用於大多數情況。正如我上面提到的,如果太多文件匹配或者文件名中有空格的話,它將會失敗。 – JimP
奇怪。 「我的」解決方案在Ubuntu上工作。但是我在CentOS中遇到錯誤。我從你的建議中得到同樣的錯誤。我試過'tar -czf files.tar.gz - $(grep -rl「123.45」。)' - 注意我加了點。但是,同樣的錯誤。 「不能統計:沒有這樣的文件或目錄」。 –