【发布时间】:2014-07-01 01:25:46
【问题描述】:
背景和问题:
我正在使用 find 命令压缩所有符合我条件的文件:
sudo -u userAccount -i find /apps/server/userAccount/logs/. -maxdepth 1 -type f -exec gzip {} \;
这将继续并根据我的标准压缩所有文件,但我不希望被提示覆盖 - 我希望能够自动跳过已经存在的文件,因为我正在处理敏感数据并且不能冒失去任何东西的风险。
到目前为止,我已经尝试过:
- 声明如上 -exec yes n | gzip {} \;
- 上面的语句 -exec [判断文件是否已经存在的if语句]
由于 find 语句语法错误,这些都不起作用。
问题:
有人知道我可以如何将上述任何一种方法与我的 find 语句一起使用吗?
更新:
我尝试使用:
sudo -u userAccount -i find /apps/server/userAccount/logs/. -maxdepth 1 -type f -exec bash -c "yes n | gzip {}" \;
但我只是让滚动的 'y' 字符返回到控制台,直到我按 CTRL-C。有什么建议么?
【问题讨论】:
-
最简单的方法是编写一个执行你想要的shell脚本,并使用
-exec scriptname {} \;。 -
-exec后面不能放管道。这会将find的输出通过管道传送到下一个命令。