我每周都会尝试压缩文件夹中的文本、csv 文件。根据我先前的问题,我让这个代码运行起来。
sudo find . -mtime +7 | sudo zip -m archive-$(date +%Y-W-%U).zip -@
我想对此进行进一步的微调,以便:
- 含有特定字符串的文件被排除。
- zip 输出保存到不同的位置
我以为我已经使用以下命令获得了第一部分,但是它一直冻结。
sudo find . -mtime +7 | sudo zip -m -x /*excludestring1* /*excludestring2* archive-$(date +%Y-W-%U).zip -@
我无法找到将其保存到其他位置的方法。我可以将“*.zip”作为排除项,但我更愿意将其保存到其他位置。有人能帮我找出我做错的地方吗?
答案1
要排除某些模式,请使用
-x
末尾的选项并在模式周围使用单引号,以便模式zip
不会被 shell 扩展:sudo find . -mtime +7 | sudo zip -m archive-$(date +%Y-W-%U).zip -@ -x '/*excludestring1*' '/*excludestring2*'
要将 zip 文件保存到其他位置,请使用要保存文件的位置的绝对路径(或相对路径)
zip
:sudo find . -mtime +7 | sudo zip -m -x /*excludestring1* /*excludestring2* /where/to/save/archive-$(date +%Y-W-%U).zip -@
替换
/where/to/save
为您想要保存 zip 文件的实际路径。例如,将其保存在
/tmp/spam/
目录中:sudo find . -mtime +7 | sudo zip -m -x /*excludestring1* /*excludestring2* /tmp/spam/archive-$(date +%Y-W-%U).zip -@
答案2
这手册页指出\
应使用来避免 shell 文件名替换,并让其zip
本身扩展通配符。
或者,您可以使用-x
开关指定一个文件,列出以下格式的所有排除项[email protected]
稍微不同的是,该find
命令具有-not
和-path
选项,可以用于类似的效果。