查找文件,解压缩,合并成一个大文件——一个shell脚本
2017-01-16 01:09
369 查看
需求:
有一堆文件乱七八糟的,但是给定一个类似后缀的小字符串,根据这个字符串,查找出所有文件,将这些文件改名(因为是压缩文件,但是后缀不是GZ),解压缩,然后合并成一个大文件。
有一堆文件乱七八糟的,但是给定一个类似后缀的小字符串,根据这个字符串,查找出所有文件,将这些文件改名(因为是压缩文件,但是后缀不是GZ),解压缩,然后合并成一个大文件。
#!/bin/bash echo "I will combine files with $1" #给定一个字符串,在当前目录下建立此字符串命名的目录 newdir="`pwd`/$1/" mkdir $newdir echo "New directory $newdir create successful." #查找所有包含这个字符串的文件,存到数组中 array_files=( `find -name "*$1*" -type f` ) #拼接新的文件,给定的字符串加上文件名中的日期 substrlength=${#array_files[0]} substr=${array_files[0]:($substrlength-4):4} newfilename="$1.$substr" echo $newfilename #获取存文件名的数组的目录,做循环处理 array_length=${#array_files[*]} for((i=0;i<$array_length;i++)) do echo "Found file ${array_files[$i]}" #根据全路径获取文件名 filename=`basename ${array_files[$i]}` #复制到新建的目录下,并且解压缩 cp ${array_files[$i]} "${newdir}${filename}.gz" gzip -d "${newdir}${filename}.gz" echo "Copy and decompress successful. Write into new file..." #通过一个awk来获取文件的字段数 fields=`awk '{if (NR==2)exit;A=NF;print A}' ${newdir}${filename}` #将文件写入新的文件中 awk -vA=$fields '{if(NF==A)print $0}' ${newdir}${filename} >>$newfilename done echo "Process complete."
相关文章推荐
- linux、shell脚本实例一“查找一个文件或者目录 找到了提示 没找到则输出未找到”
- 合并文件的一个小脚本
- 小shell脚本---查找目录下面包含string的文件
- shell脚本查找指定目录下所有子目录中的同名文件
- shell脚本随机输出一个文件的25行
- 在指定目录查找指定后缀文件的shell脚本代码
- 自己编写的一个查找Linux进程的Shell脚本
- Linux下使用Shell脚本删除一个目录下的所有子目录和文件
- 批处理一个脚本,写下备忘(递归查找文件,文件含指定字符串)
- 查找目录下同名但不同后缀名文件的shell脚本代码
- shell脚本自动查找指定路径下包含某关键字的所有文件
- 刚写的一个linux下查找文件的脚本
- shell脚本(从一些文件中查找含有特定字符的文件,将转移到指定地方)
- 一个通过不同的文件扩展名来调用不同的解压程序的shell脚本
- shell脚本查找指定目录下所有子目录中的同名文件
- 一个用于定时刷新文件访问时间戳的Shell脚本
- 通过一个shell脚本学习文件的特殊权限
- shell脚本实现查找目录下同名但不同后缀名的文件
- shell脚本随机输出一个文件的25行
- 查找目录下同名但不同后缀名文件的shell脚本代码