繁体   English   中英

Unix/Linux find 命令使用多个条件?

[英]Unix/Linux find command to use multiple conditions?

我有一个要求,我必须在目录“/dev/trigger_dir/”中查找名为“sales.trigger”的文件。 只有在条件 1 - 文件在过去 3 天内被修改或条件 2 - 文件是在星期日或星期一创建的情况下,我才应该查找文件。

我该如何使用 find 命令来做到这一点? 我试着做这样的事情

寻找 。 -type f ( -mtime -3 -name "salestrigger" -or -type f ( -printf '%Ta\\t%p\\n' | egrep "^(Sun|Mon)" | cut -f 2- ) )

我缺少一些语法。 有人可以帮忙吗?

您可以尝试将 find 与 awk 结合使用,因此:

find . -name "*.salestrigger" -type f -printf '%Ts\t%Ta\t%p\n' | awk -F '\t' '$1 > (strftime("%s")-259200) || $2 == "Sun" || $2 == "Mon" { print $3 }'

找到所有名为 salestrigger 的文件并以纪元格式打印文件修改,后跟一个制表符、修改的速记日、一个制表符和文件路径。 在 awk 中处理这个,使用纪元日期检查文件是否在过去 3 天内被修改(纪元日期现在减去 259200 秒),日期是“Sun”还是“Mon”。 打印文件路径(第三个制表符分隔字段)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM