今天我们来介绍如何用PS来重命名文件名,重命名文件在我们维护系统中时需要经常遇到的问题,先冲命名文件,然后打包做备份。。。
废话不说了,下面来看效果,先用shell来演示:
批量修改文件夹下的文件,假设有5个文件,abcd.txt,abce.txt,abcf.txt,abcg.txt,abch.txt,下面我们来修改它们的文件名
[root@Virtual shell]# find -name "*.txt" -printf %f\\n |awk -F'.' '{print $1}' |xargs -i{} mv {}.txt AA_{}.txt
[root@Virtual shell]# find -name "*.txt" -printf %f\\n |awk -F'.' '{print $1}' |xargs -i{} mv {}.txt AA_{}.txt
[root@Virtual shell]# ls
AA_abcd.txt AA_abcf.txt AA_abch.txt find.tx
AA_abce.txt AA_abcg.txt file mv.sh
[root@Virtual shell]# ll
total 12
-rw-r--r-- 1 root root 0 Jul 8 10:37 AA_abcd.txt
-rw-r--r-- 1 root root 0 Jul 8 10:37 AA_abce.txt
-rw-r--r-- 1 root root 0 Jul 8 10:37 AA_abcf.txt
-rw-r--r-- 1 root root 0 Jul 8 10:37 AA_abcg.txt
-rw-r--r-- 1 root root 0 Jul 8 10:37 AA_abch.txt
看到上面的效果了吧,下面来逐步演示上面的命令效果,慢慢往下看。。。
[root@Virtual shell]# find -name "*.txt"
##查找左右以.txt结尾的文件
./AA_abcd.txt
./AA_abcf.txt
./AA_abch.txt
./AA_abcg.txt
./AA_abce.txt
[root@Virtual shell]# find -name "*.txt" -print
##打印以.txt结尾的文件
./AA_abcd.txt
./AA_abcf.txt
./AA_abch.txt
./AA_abcg.txt
./AA_abce.txt
[root@Virtual shell]# find -name "*.txt" -printf %f\\n
##打印以.txt结尾的文件,去掉路径
AA_abcd.txt
AA_abcf.txt
AA_abch.txt
AA_abcg.txt
AA_abce.txt
[root@Virtual shell]# find -name "*.txt" -printf %f\\n |awk -F'.' '{print $1}'
##awk的左右是去掉.txt
AA_abcd
AA_abcf
AA_abch
AA_abcg
AA_abce
[root@Virtual shell]# find -name "*.txt" -printf %f\\n |awk -F'.' '{print $1}' | xargs -i{} mv {}.txt bb_{}.txt
#xargs的{}必须要和-i参数结合一起使用,前面查询结果就是{}的内容,最后是mv的修改文件名
[root@Virtual shell]# ll
total 4
-rw-r--r-- 1 root root 0 Jul 8 15:35 bb_AA_abcd.txt
-rw-r--r-- 1 root root 0 Jul 8 15:35 bb_AA_abce.txt
-rw-r--r-- 1 root root 0 Jul 8 15:35 bb_AA_abcf.txt
-rw-r--r-- 1 root root 0 Jul 8 15:35 bb_AA_abcg.txt
-rw-r--r-- 1 root root 0 Jul 8 15:35 bb_AA_abch.txt
-rwxr-xr-x 1 root root 112 Jul 8 15:22 mv.sh
[root@Virtual shell]#
在shell中还有一个比较简单的方法来实现修改文件名
[root@Virtual shell]# ll
total 4
-rw-r--r-- 1 root root 0 Jul 8 15:35 bb_AA_abcd.txt
-rw-r--r-- 1 root root 0 Jul 8 15:35 bb_AA_abce.txt
-rw-r--r-- 1 root root 0 Jul 8 15:35 bb_AA_abcf.txt
-rw-r--r-- 1 root root 0 Jul 8 15:35 bb_AA_abcg.txt
-rw-r--r-- 1 root root 0 Jul 8 15:35 bb_AA_abch.txt
-rwxr-xr-x 1 root root 112 Jul 8 15:22 mv.sh
[root@Virtual shell]# rename bb_AA cc bb_*
[root@Virtual shell]# ll
total 4
-rw-r--r-- 1 root root 0 Jul 8 15:35 cc_abcd.txt
-rw-r--r-- 1 root root 0 Jul 8 15:35 cc_abce.txt
-rw-r--r-- 1 root root 0 Jul 8 15:35 cc_abcf.txt
-rw-r--r-- 1 root root 0 Jul 8 15:35 cc_abcg.txt
-rw-r--r-- 1 root root 0 Jul 8 15:35 cc_abch.txt
-rwxr-xr-x 1 root root 112 Jul 8 15:22 mv.sh
[root@Virtual shell]#
很简单吧,rename 需要修改的部分 修改后的样子 原来的样子(支持通配符)
shell的2个方法都是很简单的命令,我们没有通过编程的方式来解决,在python中关于重命名就更简单了,下面看下效果:
In [1]: import os
In [2]: ll
total 4
-rw-r--r-- 1 root root 0 Jul 8 15:35 cc_abcd.txt
-rw-r--r-- 1 root root 0 Jul 8 15:35 cc_abce.txt
-rw-r--r-- 1 root root 0 Jul 8 15:35 cc_abcf.txt
-rw-r--r-- 1 root root 0 Jul 8 15:35 cc_abcg.txt
-rw-r--r-- 1 root root 0 Jul 8 15:35 cc_abch.txt
-rwxr-xr-x 1 root root 112 Jul 8 15:22 mv.sh*
In [3]: os.ren
os.rename os.renames
In [3]: os.rename('cc_abcd.txt','dd_cc_abcd.txt')
rename(old,new) 就是他的用法
In [4]: ll
total 4
-rw-r--r-- 1 root root 0 Jul 8 15:35 cc_abce.txt
-rw-r--r-- 1 root root 0 Jul 8 15:35 cc_abcf.txt
-rw-r--r-- 1 root root 0 Jul 8 15:35 cc_abcg.txt
-rw-r--r-- 1 root root 0 Jul 8 15:35 cc_abch.txt
-rw-r--r-- 1 root root 0 Jul 8 15:35 dd_cc_abcd.txt
-rwxr-xr-x 1 root root 112 Jul 8 15:22 mv.sh*
In [2]: ll
total 4
-rw-r--r-- 1 root root 0 Jul 8 15:35 cc_abcd.txt
-rw-r--r-- 1 root root 0 Jul 8 15:35 cc_abce.txt
-rw-r--r-- 1 root root 0 Jul 8 15:35 cc_abcf.txt
-rw-r--r-- 1 root root 0 Jul 8 15:35 cc_abcg.txt
-rw-r--r-- 1 root root 0 Jul 8 15:35 cc_abch.txt
-rwxr-xr-x 1 root root 112 Jul 8 15:22 mv.sh*
In [3]: os.ren
os.rename os.renames
In [3]: os.rename('cc_abcd.txt','dd_cc_abcd.txt')
rename(old,new) 就是他的用法
In [4]: ll
total 4
-rw-r--r-- 1 root root 0 Jul 8 15:35 cc_abce.txt
-rw-r--r-- 1 root root 0 Jul 8 15:35 cc_abcf.txt
-rw-r--r-- 1 root root 0 Jul 8 15:35 cc_abcg.txt
-rw-r--r-- 1 root root 0 Jul 8 15:35 cc_abch.txt
-rw-r--r-- 1 root root 0 Jul 8 15:35 dd_cc_abcd.txt
-rwxr-xr-x 1 root root 112 Jul 8 15:22 mv.sh*
上面演示的很简单的重命名单个文件名,至于用python批量充满文件名的话,我曾经写过一篇博客
http://world77.blog.51cto.com/414605/552326 请看这里是如何实现的。。。
今天就介绍到这里,希望能给你的学习和工作有帮助。。。
本文转自你是路人甲还是霍元甲博客51CTO博客,原文链接http://blog.51cto.com/world77/606508如需转载请自行联系原作者
world77