find ls grep 连用
#查找当前文件夹7小时内的非文件夹类型的文件
find . -cmin -420 -name ‘*.log‘ -exec ls -lrt {} \; | grep -v ‘^d‘
详解
find . -cmin -420 -name ‘*.log‘ #查询七小时内当前文件夹的所有文件,这里的*代表全部,可以用*.txt等等过滤。
-exec ls -lrt {} \; #把前面find的结果作为输入给ls命令,占位符为{},l为显示长信息,t表示按时间排序,r表示倒序。
grep -v ‘^d‘ #过滤掉以d开头的记录,^表示开头的正则表达式,-v表示invert-match过滤掉匹配的记录。ls -l查询出的文件夹都以d开头。和find中用-type f参数一个效果
## 当存在3小时以内的txt文件时,打印exist,如果不存在打印not exist,>/dev/null为防止sh脚本多余输出
if find . -cmin -180 -name ‘*.txt‘ -exec ls -lrt {} \; grep -v ‘^d‘ >/dev/null
then
echo "exist!"
else
echo "not exist!"
fi