关于shell-----3

csplitt ----一个可以根据文本自身特点进行分割,以是否存在某个单词或文本内容作为分割文件的条件
例如:csplit server.log /server/ -n  -s {*} -f server -b "%2d.log" ; rm server00.log
/server/ 用来匹配某一行,分割过程即从此处开始
/[REGEX]/表示文本样式。包括从当前行(第一行)直到(但不包括)包含“server”的匹配行
{*}表示根据匹配重复执行分割,直到文件末尾为止。可以用{整数}的形式来指定分割行的次数。
-s使命令进入静默模式,不打印其他信息
-n指定分割后的文件名后缀的数字个数,例如01、02、03等
-f指定分割后的文件名前缀(在上面的例子中,server就是前缀)
-b指定后缀格式。例如%02d.log,类似c语言中printf的参数格式。在这里文件名=前缀+后缀=server + %02d.log
根据扩展名
借助%操作符可以轻松将名称部分从“名称.扩展名”这个格式提取出来。你可以按照下面的方法从sample.jpg中提取出来
例如:file_name="sample.jpg
   name=${file_name%.*}
   echo File name is :$name
 输出的结果为 File name is sample
 
借助#操作符将文件名的扩展名部分提取出来
file_name="sample.jpg
extension=${file_jpg#*.}
echo Extension :$extension
%属于非贪婪操作,它从右往左找出匹配通配符的最短结果,还有一个操作符%%,这个操作符属于贪婪的,使用方式和%一样,只是会所有的类似的情款,例如hack.jpg.pdf.gif ,%会匹配出hack.jpg.pdf,而%%会匹配出hack.
类似的#也有一个贪婪符号,##和%%一样的意思
编写更改文件名的脚本
#!/bin/bash
#文件名:rename.sh
count=1;
for img in `find . -iname '*.jpg' -o -iname '*.png' -type f maxdepth 1`
do
new=image-$count.${img##*.}
echo "Renameing $img to $new"
mv "$img" "new"
let count++
done
ls
关于批量修改文件名或者文件后缀可以采用find ******** |rename 来支持,ubuntu系统的更是方便由于ubuntu支持正则表达,所以可以直接使用。
rename支持正则表达式
字母的替换
rename "s/AA/aa/" *  //把文件名中的AA替换成aa
修改文件的后缀
rename "s//.html//.php/" *     //把.html 后缀的改成 .php后缀
批量添加文件后缀
rename "s/$//.txt/" *     //把所有的文件名都以txt结尾
批量删除文件名
rename "s//.txt//" *      //把所有以.txt结尾的文件名的.txt删掉
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值