免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2150 | 回复: 3
打印 上一主题 下一主题

用find找最后被修改的文件 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-04-03 00:51 |只看该作者 |倒序浏览
有时  我们写脚本    每次对脚本修改完后  ./script arg1 arg2 这样来运行
我们还可以用find来找到 当前目录最后一个被修改的文件  然后再来执行
#!/bin/bash
self=`basename $0`
for i in `find . -maxdepth 1 -type f`
do
        tstr=`find . -maxdepth 1  -type f -newer $i`
        if [ -z "$tstr" ]; then
                prog=$i
                break
        fi
done

echo -n "$prog" | grep -q "$self"
if [ $? -ne 0 ]; then
        echo "$i is last modified! Now excute the file..."
        ./$prog $@
fi

用find  -newer 来找当前目录比自己modified时间晚的文件  如果没找到就说明这个文件是最后一个修改的
然后 prog就设置为这个文件名   并跳出循环  然后再来执行这个文件
比如 这个脚本名为go   最好把它考到sbin目录 并chattr +i go   
以后在 别的目录下面写的sh脚本或perl脚本  就都可以go直接执行 这个最后被修改的脚本 带参数的脚本也可以同样用go来执行 比如 vi test.sh 修改完后 直接运行 go   , 它就会执行test.sh了

论坛徽章:
0
2 [报告]
发表于 2006-04-03 11:27 |只看该作者
another way:

ls -ltr | tail -1 | awk '{print $9}'

论坛徽章:
0
3 [报告]
发表于 2006-04-07 11:54 |只看该作者
好用法~!   :)
改一下 比较通用
ls -ltr | tail -1 | awk '{print $NF}'

[ 本帖最后由 juey 于 2006-4-7 12:11 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2006-04-07 11:56 |只看该作者
ls -ltr | tail -1 | awk '/^[-]/{print $9}'
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP