批处理是一种高效的操作模式。既然是批量,就得有迹可循,有规则可定义。比如给最后5个文件打包压缩,又比如只将.jpg
文件打包压缩。下边,就来总结下常见的操作。
先看下for循环
cd ss
for i in `find ./*.jpg`;
do echo $i;
done
上边的 for
循环会将 ss文件下,所有的以 .jpg
结尾的文件名列出来。需要注意 符号以及变量
$i`。
批量重命名
将
ss
文件夹里边所有文件文件名第一个字替换成vini
cd ss
for i in `ls`;
do mv -f $i `echo $i | sed 's/^./vini/'`;
done
给一个文件重命名我们使用 mv
。看着命名是不是觉得有熟悉的味道,那就是正则。^
是匹配开头。
将
ss
文件夹里边所有文件文件名最后五个字符替换成vini
cd ss
for i in `ls`;
do mv -f $i `echo $i | sed 's/.....$/vini/'`;
done
将
ss
文件夹里边所有文件文件名末尾添加vini
cd ss
for i in `ls`;
do mv -f $i `echo $i'vini'`;
done
将
ss
文件夹里边所有文件文件名小写变大写
cd ss
for i in `ls`;
do mv -f $i `echo $i | tr a-z A-Z`;
done
批量压缩
常见压缩命令:
tar -cvf vini.tar *.jpg //将目录里所有的jpg文件打包成vini.tar
tar -czf vini.tar.gz *.jpg //将目录里所有的jpg打包成tar后,再将其用gzip压缩
tar -cjf vini.tar.bz2 *.jpg //将目录里所有的jpg打包成tar后,再将其用bzip2压缩
tar -cZf vini.tar.Z *.jpg //将目录里所有的jpg打包成tar后,再将其用compress压缩
rar vini.rar *.jpg //rar格式压缩,需要先下载 rar for linux
zip vini.zip *.jpg //zip格式压缩,需要先下载 zip for linux
如果想压缩后,直接在win下使用,可以选择压缩成 .tar.gz
,.rar
,.zip
等格式。
解压
tar -xvf vini.tar //解压tar包
tar -xzvf vini.tar.gz //解压tar.gz包
tar -xjvf vini.tar.bz2 //解压tar.bz2
tar -xZvf vini.tar.Z //加压tar.Z
unrar e vini.rar //解压rar
unzip vini.zip //解压zip
将
ss
目录以及子目录所有文件打包成一个文件
# -r 递归处理
zip -r vini.zip ss
将
ss
目录下的所有的jpg
文件单个打包
cd ss
for i in `find ./*.jpg`;
do zip $i.zip $i;
done
将
ss
目录下最后5个文件压缩成一个文件
cd ss
# A 列出除了"."和".."以外的文件
# $( ) 相当于 ` `,其中放的是命令
tar -czf vini.tgz $(ls -A|tail -n 5)
tail 命令
# 输出log的最后5行
tail -n 5 2018-01-05.log
整理来源
http://blog.chinaunix.net/uid-16728139-id-3321890.html