TA的每日心情 | 无聊 4 天前 |
---|
签到天数: 77 天 连续签到: 1 天 [LV.6]测试旅长
|
实战一
要求:将某文件夹及其子文件中所有 readme.txt 的文件找出来,统计文件中包括name,age,base addre
ss等字段信息。(因为存在重名冲突,因此需要在抓取的过程中编号来修改其名称)
脚本实现:
#!bin/bash
Count=1
for line in $( find -name readme.txt )
do
echo "find ${line}"
name0=$(printf "%05d" $Count)
name=${name0:0:5}
echo $name
cp ${line} "readme"$name".txtnew"
(( Count=Count+1))
echo $Count "Rename OK"
done
脚本释义:
第一句表示由bin路径下的bash解释器来解释该脚本,第二句定义count变量,第三句for循环,括号内是
查找搜索语句,$()表示执行括号内的语句,并把返回值保存,以供查找。第三四do,第五句打印line的
值,第六句 %05d 表示至少输出5位数字,取count的值赋给name0,第七句name=${name0:0:5},将
name0从左到右的0~5位数据赋值给name(列如name0数据为123456,那么name被赋值为12345,没
有6),第八句打印name;第九句重命名;第十句自增,等同于Count=$(( Count+1)) 或者 let Count+
+(Count和++之间不能有空格);第十一句打印;十二句结束。
注意:语法结构:for ,do ,done;类似的还有while ,do ,done。
参考博客:
Linux中` `、$、$( ) 、${ } 有什么区别
shell 按规则批量重命名文件
语句实现:find -name *.txtnew -exec grep -e name -e age -e "base address" {} >ok.txt \;
语句释义:查找所有以.txtnew结尾的文件,-exec 后面跟执行语句,语句以"\;"结束,{}表示前面find出
来的值,当值存在或者为真时,执行-exec后面的指令;grep 在文件内容上抓取关键词,多个关键词使用
-e 连接;>表示将指令执行结果转存为ok.txt。
实战二
要求:不小心将压缩包解压在当前文件夹,导致目录很乱,需要删除解压出来的文件。
脚本实现:
mkdir tmp
tar xvf *.tar -C tmp
rm -rf $(ls tmp) (加上-r-f可以不用每次询问)
脚本释义:第一句创建文件夹;第二句将tar包压缩到指定目录tmp;第三句删除tmp中ls列出来的所有文件。
实战三
要求:查看文件大小
语句实现:du -h --max-depth=4 文件名/
语句释义:展示最大深度为4的文件及大小,--max-depth=4最大深度为4;
实战四
要求:将目标文件夹的windows文件全部转换为unix系统的文件。
语句实现:find -iname "*" -exec dos2unix {} \;
|
|