天天PS之二:关于重命名文件

简介:
  今天我们来介绍如何用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*

上面演示的很简单的重命名单个文件名,至于用python批量充满文件名的话,我曾经写过一篇博客 http://world77.blog.51cto.com/414605/552326  请看这里是如何实现的。。。

    今天就介绍到这里,希望能给你的学习和工作有帮助。。。
本文转自你是路人甲还是霍元甲博客51CTO博客,原文链接http://blog.51cto.com/world77/606508如需转载请自行联系原作者

world77

相关文章
为ps1脚本文件添加数字签名
再win11环境下为PowerShell脚本文件进行数字签名
|
Windows
ts-node : 无法加载文件 C:\Users\Dell\AppData\Roaming\npm\ts-node.ps1,因为在此系统上禁止运行脚本。有关详细信息
ts-node : 无法加载文件 C:\Users\Dell\AppData\Roaming\npm\ts-node.ps1,因为在此系统上禁止运行脚本。有关详细信息
267 0
|
资源调度
pnpm : 无法加载文件 C:\Users\86183\AppData\Roaming\npm\pnpm.ps1,因为在此系统上禁止运行脚本。
发现了问题,在上一个项目中我是使用的npm来进行安装依赖和运行打包的,在看到这里时才发现了问题,解决的方法就是 1.在系统中搜索框输入 Windos PowerShell,点击以管理员身份运行
|
3月前
|
存储 文件存储
2、掌握PS文件以及存储
这篇文章是关于Photoshop文件(PSD)的掌握和存储方法的介绍,但具体内容没有在摘要中提供,因此无法给出详细摘要。如果需要了解PSD文件的处理技巧或存储最佳实践,建议直接访问博客以获取完整信息。
2、掌握PS文件以及存储
|
5月前
|
JavaScript
vue : 无法加载文件 D:\module\npm_module\npm_modules\vue.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.c
vue : 无法加载文件 D:\module\npm_module\npm_modules\vue.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.c
IMG映射文件的位置,可以与PS进行相互配合
IMG映射文件的位置,可以与PS进行相互配合
|
JavaScript Windows
vue : 无法加载文件 C:\Program Files\nodejs\vue.ps1,因为在此系统上禁止运行脚本。...
vue : 无法加载文件 C:\Program Files\nodejs\vue.ps1,因为在此系统上禁止运行脚本。...
457 1
|
6月前
|
资源调度
pnpm : 无法加载文件 C:\Users\Administrator\AppData\Roaming\npm\pnpm.ps1,因为在此系统上禁止运行脚本。
pnpm : 无法加载文件 C:\Users\Administrator\AppData\Roaming\npm\pnpm.ps1,因为在此系统上禁止运行脚本。
|
6月前
|
前端开发 微服务 Windows
PowerShell 命令窗口执行 pnpm 命令报错 无法加载文件 pnpm.ps1,因为在此系统上禁止运行脚本
PowerShell 命令窗口执行 pnpm 命令报错 无法加载文件 pnpm.ps1,因为在此系统上禁止运行脚本
|
Windows
powershell配置anaconda及解决【无法加载文件C:\Users\xxx\Documents\WindowsPowerShell\profile.ps1,因为在此系统上禁止运行脚本】的问题
powershell配置anaconda及解决【无法加载文件C:\Users\xxx\Documents\WindowsPowerShell\profile.ps1,因为在此系统上禁止运行脚本】的问题
2602 0