最近利用业余时间学习了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. 从vue.js的源码分析,input和textarea上的v-model指令到底做了什么

    v-model是 vue.js 中用于在表单表单元素上创建双向数据绑定,它的本质只是一个语法糖,在单向数据绑定的基础上,增加了监听用户输入事件并更新数据的功能:对,它本质上只是一个语法糖,但到底是一个 ...

  2. iOS用户响应者链的那些事儿

    这篇文章想跟大家分享的主旨是iOS捕获用户事件的各种情况,以及内部封装的一些特殊事件. 我们先从UIButton谈起,UIButton大家使用的太多了,他特殊的地方就在于其内置的普通Default/高 ...

  3. Android可伸缩列表ExpandableListView

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...

  4. ESB 12种跑法

    ESB 12种跑法 请求响应: MQ-MQ             MQ-Webservice                Webservice-MQ     Webservice-Webservi ...

  5. 1084. Broken Keyboard (20)【字符串操作】——PAT (Advanced Level) Practise

    题目信息 1084. Broken Keyboard (20) 时间限制200 ms 内存限制65536 kB 代码长度限制16000 B On a broken keyboard, some of ...

  6. 前端JS利用canvas的drawImage()对图片进行压缩

    对于大尺寸图片的上传,在前端进行压缩除了省流量外,最大的意义是极大的提高了用户体验. 这种体验包括两方面: 1.由于上传图片尺寸比较小,因此上传速度会比较快,交互会更加流畅,同时大大降低了网络异常导致 ...

  7. 大量数据更新导致fgc频繁引起jvm服务暂停。

    线上跑的几台server突然出现大量fgc,因为在fgc过程的stop the world太久.引起其他应用訪问该server上的接口大量超时.(发生超时的时间点和fgc时间点一致) 先进行初步的优化 ...

  8. Linux查看目录大小

    du -ah --max-depth=1 a表示显示目录下所有的文件和文件夹(不含子目录) h表示以人类能看懂的方式 max-depth表示目录的深度

  9. [SCSS] Create a gradient with a Sass loop

    In this lesson, you will learn how to iteratively generate CSS selectors and attributes using Sass l ...

  10. Android经常使用UI组件 - Button

    button(Button)是Android其中一个经常使用的UI组件.非常小可是在开发中最经常使用到.一般通过与监听器结合使用.从而触发一些特定事件. Button继承了TextView.它的功能就 ...