linux中非常有用的一个技巧就是对当前目录或某一目录下的某些文件进行重命名操作。比如,当前目录下有很多以数字命名的文件,且数字位数不等,有一位的也有多位的,现在想对这些文件重命名加上.jpg后缀。该怎么操作呢?
分析一下,应该分两步进行:
第一步,首先要找出当前目录下的所有以数字命名的文件。
有好多种方法:
1.可以用ls命令配合正则表达式
ls | grep -E '[0-9]+'
这个命令其实不能完全正确匹配,这个命令会找出只要文件名中含有一个或多个数字的文件。也就是说如果文件名中还有其他字符,比如字母,下划线也会被匹配到。
ls |grep -E '^[0-9]*[0-9]$'
这个命令是找出文件名中以数字开头,以数字结尾,并且中间有0或多个数字的文件。
第二步,重命名文件,添加后缀
ls | grep -E '^[0-9]*[0-9]$' | awk '{print $1}'|awk '{printf "mv %s %s.jpg\n",$1,$1}' | sh
或者
ls|grep -E '^[0-9]*[0-9]$' | awk '{print "mv "$1" "$1".jpg"}'|sh
print和printf的区别在于前者会自动换行,后者不会。当然printf比print有更丰富的输出控制格式。
注意,上面这个命令中的\n很重要,如果没有\n就会出错。另外最后的|sh也不能少。
另外,查找某一类型的文件还可以用find命令,find -type或find -name
如何去掉文件名的后缀?
ls |grep '.jpg'| awk -F '.' '{print "mv "$0" "$1}'|sh