最近利用业余时间学习了shell 并做了个例子

实现的功能是 : 监听demo文件夹下的文件,只要新增了  .js的文件就把对应的文件名重组,拼接, 最后写入到demo.js里面.

文件结构如下 :

demo.sh代码如下

while : ;
do
if [ -f oldfiles.log ]
then
#按照时间排序 并取第一行 就是最新建的文件
newfile=` ls -t | head -1 `
#查找到最新建的文件 如果不存在 就抛出错误到dev/null(无底洞)
cat oldfiles.log | grep $newfile >/dev/null
#如果上一条命令执行后的结束代码不是0则执行下面的命令
if [ $? -eq 1 ]
then
echo "there is a new file: $newfile"
# 先把.js结尾的文件获取到 就是只监控js文件
if [ "${newfile##*.}"x = "js"x ]
then
#再判断是 class 开头的还是 route 开头的
newfilehead=`echo $newfile | cut -d . -f 1`
val_class='class'
val_route='route'
#如果是route开头的文件
#ecui.esr.loadRoute(‘smile.monkey’);
if [ "$newfilehead"x = "route"x ]
then
# echo $newfile
noHeadStr=`echo ${newfile#*.}`
noTailStr=`echo ${noHeadStr%.*}`
# echo "ecui.esr.loadRoute(‘"${noTailStr}"’);" >>demo.js
echo "ecui.esr.loadRoute('"${noTailStr}"');" >>demo.js
fi
#如果是class开头的文件
#ecui.esr.loadClass(‘smile.monkey’);
if [ "$newfilehead"x = "class"x ]
then
# echo $newfile
noHeadStr=`echo ${newfile#*.}`
# echo $noHeadStr
noTailStr=`echo ${noHeadStr%.*}`
echo $noTailStr
cat demo.js >oldfiles.log
echo "ecui.esr.loadClass('"${noTailStr}"');" >demo.js
cat oldfiles.log | while read line
do
echo $line>>demo.js
done
rm oldfiles.log
fi
fi
echo $newfile >> oldfiles.log
else
echo "there is no new files"
fi
else
ls -t -r > oldfiles.log
echo "cache old files info"
fi
sleep 1; done;

执行demo.sh之后 会无限循环执行 达到遍历的目的.

最后总结:合理使用shell 能帮助我们自动化完成好多任务 ,提高工作效率

如果没有shell基础的同学先看看一下链接 稍微学习下shell:

shell 的菜鸟教程:   http://www.runoob.com/linux/linux-shell.html

shell截取字符串: http://www.jb51.net/article/56563.htm

shell 字符串比较:  https://www.cnblogs.com/wangkongming/p/4221503.html

shell遍历文件目录,监听文件变化,拼接字符串的更多相关文章

  1. 利用WatchService监听文件变化

    在实现配置中心的多种方案中,有基于JDK7+的WatchService方法,其在单机应用中还是挺有实践的意义的. 代码如下: package com.longge.mytest; import jav ...

  2. 如何使用NodeJs来监听文件变化

    1.前言 在我们调试修改代码的时候,每修改一次代码,哪怕只是很小的修改,我们都需要手动重新build文件,然后再运行代码,看修改的效果,这样的效率特别低,对于开发者来说简直不能忍. 2.构建自动编译工 ...

  3. node.js监听文件变化

    前言 随着前端技术的飞速发展,前端开发也从原始的刀耕火种,向着工程化效率化的方向发展.在各种开发框架之外,打包编译等技术也是层出不穷,开发体验也是越来越好.例如HMR,让我们的更新可以即时可见,告别了 ...

  4. gulp监听文件变化,并拷贝到指定目录

    暂时不支持目录修改.创建.删除var gulp = require('gulp'); var fs = require('fs'); var path = require('path'); var l ...

  5. gulp监听文件变化,并拷贝到指定目录(转)---参考记录

    ###暂时不支持目录修改.创建.删除.var gulp = require('gulp'); var fs = require('fs'); var path = require('path'); v ...

  6. Java NIO.2 使用Path接口来监听文件、文件夹变化

    Java7对NIO进行了大的改进,新增了许多功能: 对文件系统的访问提供了全面的支持 提供了基于异步Channel的IO 这些新增的IO功能简称为 NIO.2,依然在java.nio包下. 早期的Ja ...

  7. 【转载】java 监听文件或者文件夹变化的几种方式

    1.log4j的实现的文件内容变化监听 package com.jp.filemonitor; import org.apache.log4j.helpers.FileWatchdog; public ...

  8. gulp之sass 监听文件,自动编译

    gulpfile.js文件如下: var gulp = require('gulp'); var sass = require('gulp-sass'); gulp.task('default', f ...

  9. 玩转gulp之watch监听文件自动编译

    博客移至 https://www.dodoblog.cn/blog?id=5befc928e0feb34495b57035 我们在写页面的时候,用到sass less等css预处理器的时候,虽然写的很 ...

随机推荐

  1. jqgrid postData setGridParam 调用多次时查询条件累加的问题--详情页查询导致的无法在新的页面中查询

    $("#btn_search").click(function () { url = "/AMEvents/GetGridJson?evtype=1"; var ...

  2. UBI介绍

    转:http://blog.csdn.net/kickxxx/article/details/6707589 目录 Table of contents Big red note User-space ...

  3. 【java】java反射 Field类的研究使用

    java反射 Field类的研究使用 user.getClass().getFields() 和 user.getClass().getDeclaredFields(); 的区别是什么?

  4. frp -- proxy name [ssh] is already in use

  5. THINKPHP nginx设置路由为PATHINFO模式

    首先THINKPHP配置文件中设置 //url访问模式为rewrite模式 'URL_MODEL'=>'2', 然后再在nginx.conf文件中,找到这一条语句 #access_log log ...

  6. git回退到某个commit

    git log查看提交历史及提交的commit_id 回退命令: $ git reset --hard HEAD^ 回退到上个版本$ git reset --hard HEAD~3 回退到前3次提交之 ...

  7. 关于VS下的应用程序出现0xc000007b的问题以及OpenCV相关的0xc000007b问题

    本文参考过其他一些文章: http://www.cnblogs.com/csuftzzk/p/windows_launch_error_0xc000007b.html 这个问题在网上一查一大堆,主要的 ...

  8. 用word2vec对语料进行训练

    在Linux上安装好word2vec, 进入trunk文件夹,把分词后的语料文件放在trunk文件夹内,执行:./word2vec -train tt.txt -output vectors.bin ...

  9. java 过滤器(Filter)与springMVC 拦截器(interceptor)的实现案例

    java 过滤器Filter: package com.sun.test.aircraft.filter;import javax.servlet.*;import java.io.IOExcepti ...

  10. 简单的图片处理servlet

    好久没写博客了.近期做了一个比較有趣的商城项目,里面的业务还真的非常复杂,好在做了特殊的处理之后商城也能正常的使用了. 可是没中不足的就是图片目录和项目掺杂在一块,实在有些难以维护.之后找了点资料就搞 ...