shell遍历文件目录,监听文件变化,拼接字符串
最近利用业余时间学习了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遍历文件目录,监听文件变化,拼接字符串的更多相关文章
- 利用WatchService监听文件变化
在实现配置中心的多种方案中,有基于JDK7+的WatchService方法,其在单机应用中还是挺有实践的意义的. 代码如下: package com.longge.mytest; import jav ...
- 如何使用NodeJs来监听文件变化
1.前言 在我们调试修改代码的时候,每修改一次代码,哪怕只是很小的修改,我们都需要手动重新build文件,然后再运行代码,看修改的效果,这样的效率特别低,对于开发者来说简直不能忍. 2.构建自动编译工 ...
- node.js监听文件变化
前言 随着前端技术的飞速发展,前端开发也从原始的刀耕火种,向着工程化效率化的方向发展.在各种开发框架之外,打包编译等技术也是层出不穷,开发体验也是越来越好.例如HMR,让我们的更新可以即时可见,告别了 ...
- gulp监听文件变化,并拷贝到指定目录
暂时不支持目录修改.创建.删除var gulp = require('gulp'); var fs = require('fs'); var path = require('path'); var l ...
- gulp监听文件变化,并拷贝到指定目录(转)---参考记录
###暂时不支持目录修改.创建.删除.var gulp = require('gulp'); var fs = require('fs'); var path = require('path'); v ...
- Java NIO.2 使用Path接口来监听文件、文件夹变化
Java7对NIO进行了大的改进,新增了许多功能: 对文件系统的访问提供了全面的支持 提供了基于异步Channel的IO 这些新增的IO功能简称为 NIO.2,依然在java.nio包下. 早期的Ja ...
- 【转载】java 监听文件或者文件夹变化的几种方式
1.log4j的实现的文件内容变化监听 package com.jp.filemonitor; import org.apache.log4j.helpers.FileWatchdog; public ...
- gulp之sass 监听文件,自动编译
gulpfile.js文件如下: var gulp = require('gulp'); var sass = require('gulp-sass'); gulp.task('default', f ...
- 玩转gulp之watch监听文件自动编译
博客移至 https://www.dodoblog.cn/blog?id=5befc928e0feb34495b57035 我们在写页面的时候,用到sass less等css预处理器的时候,虽然写的很 ...
随机推荐
- Vue服务端渲染 VS Vue浏览器端渲染)
Vue 2.0 开始支持服务端渲染的功能,所以本文章也是基于vue 2.0以上版本.网上对于服务端渲染的资料还是比较少,最经典的莫过于Vue作者尤雨溪大神的 vue-hacker-news.本人在公司 ...
- springMVC初探视图解析器——XmlViewResolver
XmlViewResolver解析器 XmlViewResolver基于XML文件中的视图bean来解析“逻辑视图”.XmlViewResolver默认会从/WEB-INF/views.xml中加载视 ...
- centos7 安装LNMP(php7)之mysql安装,更改密码,远程授权
1.执行命令 yum install mysql mysql-server mysql-devel -y 知道出现complete!则安装mysql完成 当执行 service mysqld rest ...
- 走进C++程序世界-----operator new delete 重载
在C++ 的世界里,new 和delete 是keyword.而在C的世界里相相应的malloc和free是函数,关键C++的new和delete分析,详见前面的章节.这里就不在过多的介绍了.链接. ...
- Redis缓存清理
Redis缓存清理 学习了:https://www.cnblogs.com/ZnCl/p/7116870.html 使用 redis-cli.exe登录, 使用flushall 命令: 或者key * ...
- [转载]LoadRunner如何处理AJAX异步请求
最近在网上经常有人问“LoadRunner脚本回放成功,但数据没有写入数据库,这是什么原因”,记得以前的同事也遇到过相同的问题,再次将解决方法贴出来,希望能帮助大家. 相信大家在做测试的过程中,特别是 ...
- Android学习(二) 标签滚动跳过
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools= ...
- vueAdmin使用动态路由时踩坑
在路由守护方法router.beforeEach中如果有使用动态路由,注意此时的路由对当前的router无效,下次路由时才起效. 导致的问题是---- 当页面刷新或重新打开页面时,无法找到当前路由(跳 ...
- DNS、bind 953端口
1.953端口是rndc 的端口 2.rndc是监控bind的统计数据用的,同时不需要为了更新某个zone而重启bind 3.输入rndc ,如果ok的话,是这样的 4.看到第一条语句了没. 不需要重 ...
- 10.3.1 一个CONNECT BY的样例
10.3.1 一个CONNECT BY的样例正在更新内容,请稍后