shell遍历文件目录,监听文件变化,拼接字符串

摘要:
最近,我在业余时间学习了shell,并做了一个实现该功能的示例:收听演示文件夹下的文件,重新组织并拼接相应的文件名,只要。js文件,最后将它们写入demo.js文件。文件结构如下:demo.sh代码如下while:;Doif[-foldfiles.log]then#按时间排序并将第一行作为新创建的文件newfile=`ls-t|head-1`#查找新创建的。如果它不存在,则向dev/null(无底洞)cataldfile抛出一个错误。log|grep$newfile˃/dev/null#如果最后一个命令后的结束代码不是0,则在[$?

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

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

文件结构如下 :

shell遍历文件目录,监听文件变化,拼接字符串第1张

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遍历文件目录,监听文件变化,拼接字符串》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇sql server中将一个字段根据某个字符拆分成多个字段显示c++ windows下计时下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Git 快速入门

首先来了解一下什么是[git] git是一款分布式管理代码以及一些简单的常规文本文件的的工具,并可将修改的代码上传至服务器备份,相较之前的'svn'集中式管理工具,git是一款非常方便且安全的工具. tip:[分布式]是指整个项目在分部开发时可以直接将项目分支给其他分部,待各个分部代码写完后再向主线合并即可,这样即便有一个分支出现问题也不会影响主线,非常...

Docker之构建上下文详解

昨天写了使用 Dockerfile 定制镜像。其中构建上下文这一块没有写,今天把这一块单独拿出来写一下。 Docker镜像构建 简单说下构建镜像步骤: cd Dockerfile 所在目录; 执行 docker build 构建命令: docker build -t imageName:imageTag . 通过上面的工作流,很容易形成这样的理解误...

Linux(Ubuntu)设置环境变量(转载)

http://blog.csdn.net/wumingxing0228/article/details/6050175 环境变量是和Shell紧密相关的,用户登录系统后就启动了一个Shell。对于Linux来说一般是bash,但也可以重新设定或切换到其它的 Shell。对于UNIX,可能是CShelll。环境变量是通过Shell命令来设置的,设置好的环境变...

使用Yii框架完整搭建网站流程入门

下载地址: http://www.yiiframework.com/ http://www.yiichina.com/ 由美籍华人薛强研究而出, Yii 这个名字(读作易(Yee))代表 简单(easy), 高效(efficient)和可扩展(extensible). 基于MVC,纯OOP,强大 基本配置要求:数据库:mysql,php5.0.1以上;pd...

乌班图的安装

Ubuntu 系统安装 在VMware中新建虚拟机 指定当前虚拟机使用的系统镜像 设置系统的登录账号密码,设置完成以后一定要记住。 一直等待,系统初始化安装,知道出现下方界面: 输入前面设置的密码,点击Sign In 点击右上角绿色按钮,一路next即可。 点击Install Now,下载最新版本的ubuntu软件...

ali-oss-upload-cli 命令上传文件到 OSS 桶

使用 ali-oss-upload-cli 插件 https://www.npmjs.com/package/ali-oss-upload-cli 1. 安装 npm install --save ali-oss-upload-cli 2. 在项目根目录下创建文件oss.config.js, 与 package.json 同级 module.exports...