我有很多文件需要压缩到一个目录中。我不想压缩目录中的所有文件,而只想压缩与某个查询匹配的文件。
我做了
grep abc file-* > out.txt
Run Code Online (Sandbox Code Playgroud)
在每个文件中创建一个包含所有“abc”实例的文件。我需要文件本身。我如何告诉 bash 只压缩这些文件?
slh*_*hck 46
很简单:
zip archive -@ < out.txt
Run Code Online (Sandbox Code Playgroud)
也就是说,如果您的out.txt
文件每行包含一个文件名。它会将所有文件添加out.txt
到一个名为archive.zip
.
该-@
选项zip
从 STDIN 读取。
如果您想跳过创建临时out.txt
文件,也可以使用grep
的功能来打印文件名。-r
启用递归搜索(在您的情况下可能不需要)并-l
仅打印文件名:
grep -rl "abc" file-* | zip archive -@
Run Code Online (Sandbox Code Playgroud)
已接受答案的替代方案,来自此处:
cat out.txt | zip -@ zipfile.zip
cat out.txt | zip -@ - > zipfile.zip
zip zipfile.zip $(cat out.txt) -r
zip zipfile.zip -r . -i@out.txt
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
39225 次 |
最近记录: |