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脚本的主要内容,如果未能解决你的问题,请参考以下文章
linux,windows下检测指定的IP地址是否可用或者检测IP地址冲突的3种方式(批处理程序,python程序,linux shell 批量ping)