Linux批量处理的核心-shell脚本

Posted 小R老师私房课

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux批量处理的核心-shell脚本相关的知识,希望对你有一定的参考价值。

Linux系统真是让人越了解越心水的好系统,尤其对于文件的批量处理上,某种世界如此美好的幸福感油然而生呀~


批量处理的核心在于shell脚本,也就是以.sh为后缀的文件名,在终端可以用vim [脚本名].sh 生成并进入脚本编写模式;进入后按键盘“i”可进入编辑模式,按“Esc”可退出编辑模式,退出前可以输入“:wq”,代表保存并退出(冒号也要写哦)。


对于批量处理来说,只要掌握几个主要的命令:路径定义,subject_list,和for循环语句,随后灵活变通基本上就可以满足绝大多数的需求啦。


下面我们举个简单的例子来看一下吧,假设一个文件夹名字叫data,里面有10个子文件,分别叫data01,data02..data10,然后我们想在每个子文件下都新建一个test文件夹,若是一个一个新建非常机械费力,若是有shell脚本就可以很轻松啦。


我们首先在终端输入,vim new_folder.sh进入脚本按字母“i”进行编写(建立一下创建新文件夹的脚本);

1.进行数据路径的定义:

sour_dir=/home/data(sour_dir,代表原始文件的存放路径)


2.获取subject.list:

subject.list代表你想进行操作的文件夹列表,格式为一个txt文档,每行一个文件名;若是你只想在data01,data03,data04的文件夹下创建test文件夹,那么list里面的格式为:

data01

data03

data04

如此将所有需要操作的文件夹按序列排好写上就可以了,这里有个小技巧,可以写:ls> subjectlist.txt(意思是将路径下的文件以txt格式转存),然后vim subjectlist.txt将一些不需要处理的文件名删掉就可以了


3.进行需要处理的文件夹定义:

subjectlist=${sour_dir}/subjectlist.txt(意思是subject list是放在原始文件的目录下一个叫subjectlist.txt的文档里)


4.for循环语句

for sub in  `cat ${subjectlis}`(对于在subject list中的文件夹)

do(进行操作)

    echo ${sub} (终端先显示一些要对哪个文件夹进行操作,方便我们检查程序中的可能错误,也可以省略)

    cd ${sour_dir}/${sub}(进入到相应的文件夹中)

    mkdir test(创建test文件夹)

done


所有步骤写好之后,按“Esc”,输入“:wq”保存并退出,然后再终端输入:bash new_folder.sh,系统就会自动运行啦!


好啦~记住三个框架:路径,subject list和for语句,简略版语句奉上:

sour_dir=/home/data

subjectlist=${sour_dir}/subjectlist.txt

for sub in  `cat  ${subjectlis}`

       do 

            echo ${sub} 

            cd ${sour_dir}/${sub}

            mkdir test

       done


有了这个原始脚本之后,若是我们想要将data01,data02等子文件夹中的test文件夹再复制一个,命名为test_backup,我们只需要将下划线中的mkdir test换成cp -r test test_backup就可以啦;若是我们又想将test_backup删掉,将下划线处的代码改为:rm -r test_backup就可以啦~


好啦,万变不离其宗,有了基本的框架概念,以后就可以大喇喇的一键enter,然后嗨森的粗去玩耍啦~

以上是关于Linux批量处理的核心-shell脚本的主要内容,如果未能解决你的问题,请参考以下文章

批量复制及执行命令shell脚本

linux,windows下检测指定的IP地址是否可用或者检测IP地址冲突的3种方式(批处理程序,python程序,linux shell 批量ping)

shell批量移动文件

shell如何批量处理一张表的时间数据

博客迁移:Shell脚本批量文件处理

hadoop 批量处理脚本编写