使用命令批量修改文件名

需求

从某地下载了一些文件,这些文件名字都是aaaa-xxssxxx的格式,现在想把每个文件名前部分的aaaa删除。

思路

使用awk命令将修改前、修改后的文件名打出来然后再使用xargs命令将修改前、修改后的文件名传入mv命令作为参数

jaan@zhangdeshuaideMacBook-Pro chenge % ls
zhuanlan.zhihu.com-第13章-StringTable.pdf
zhuanlan.zhihu.com-第14章-垃圾回收概述.pdf
zhuanlan.zhihu.com-第15章-垃圾回收相关算法.pdf
zhuanlan.zhihu.com-第16章-垃圾回收相关概念.pdf
zhuanlan.zhihu.com-第17章-垃圾回收器.pdf
zhuanlan.zhihu.com-第18章-Class文件结构.pdf
zhuanlan.zhihu.com-第19章-字节码指令集与解析举例.pdf
zhuanlan.zhihu.com-第21章-再谈类的加载器.pdf
zhuanlan.zhihu.com-第22章-性能调优概述.pdf
zhuanlan.zhihu.com-第23章-JVM监控及诊断工具-命令行篇.pdf
zhuanlan.zhihu.com-第25章-JVM运行时参数.pdf
zhuanlan.zhihu.com-第26章-分析GC日志.pdf
zhuanlan.zhihu.com-第二十章-类的加载过程详解.pdf
第10章-对象实例化内存布局与访问定位.pdf
第11章-直接内存.pdf
第12章-执行引擎.pdf
第5章-虚拟机栈.pdf
第6章-本地方法接口.pdf
第7章-本地方法栈.pdf
第8章-堆.pdf
第9章-方法区.pdf

这是要修改的文件列表,其中有几个文件我已经手动修改了,剩下的将使用命令批量修改

使用awk命令将修改前、修改后的文件名打出来

awk有多种使用方式可以完成将修改前、修改后的文件名打出来的需求,这里只介绍两种:awk的分割拼接、使用awk函数进行字符串替换

  • 使用awk的分割及拼接
    ls | awk -F"-" '$0 ~ /zhihu/ {print$0" "$2"-"$3}'
    命令的含义是将每一行用"-"分割,然后过滤掉含有"zhihu"的行(没有这个需求的话可以将$0 ~ /zhihu/删掉),然后打印完整行及分割后的第2部分和第3部分并使用’-'将2、3部分拼接起来(awk是一行一行处理的)
jaan@zhangdeshuaideMacBook-Pro chenge % ls | awk -F"-" '$0 ~ /zhihu/ {print$0" "$2"-"$3}'
zhuanlan.zhihu.com-第13章-StringTable.pdf 第13章-StringTable.pdf
zhuanlan.zhihu.com-第14章-垃圾回收概述.pdf 第14章-垃圾回收概述.pdf
zhuanlan.zhihu.com-第15章-垃圾回收相关算法.pdf 第15章-垃圾回收相关算法.pdf
zhuanlan.zhihu.com-第16章-垃圾回收相关概念.pdf 第16章-垃圾回收相关概念.pdf
zhuanlan.zhihu.com-第17章-垃圾回收器.pdf 第17章-垃圾回收器.pdf
zhuanlan.zhihu.com-第18章-Class文件结构.pdf 第18章-Class文件结构.pdf
zhuanlan.zhihu.com-第19章-字节码指令集与解析举例.pdf 第19章-字节码指令集与解析举例.pdf
zhuanlan.zhihu.com-第21章-再谈类的加载器.pdf 第21章-再谈类的加载器.pdf
zhuanlan.zhihu.com-第22章-性能调优概述.pdf 第22章-性能调优概述.pdf
zhuanlan.zhihu.com-第23章-JVM监控及诊断工具-命令行篇.pdf 第23章-JVM监控及诊断工具
zhuanlan.zhihu.com-第25章-JVM运行时参数.pdf 第25章-JVM运行时参数.pdf
zhuanlan.zhihu.com-第26章-分析GC日志.pdf 第26章-分析GC日志.pdf
zhuanlan.zhihu.com-第二十章-类的加载过程详解.pdf 第二十章-类的加载过程详解.pdf
  • 使用awk函数进行字符串替换

awk有很多内置函数,如字符串操作类函数、时间操作类函数、算数操作类函数等https://www.runoob.com/w3cnote/awk-built-in-functions.html#b2
使用awk的字符串操作函数gsub( Ere, Repl, [ In ] ),gsub 是全局替换( global substitution )的缩写。除了正则表达式所有具体值被替代这点,它和 sub 函数完全一样地执行。

使用awk函数进行字符串替换 ls | awk '$0 ~ /zhihu/ {str=$0; gsub("zhuanlan.zhihu.com-","",str);print $0" "str }'

命令含义是用ls命令展示当前目录的所有文件名字,然后使用awk处理,后面的描述都是awk处理的内容:过滤掉含有"zhihu"的行(没有这个需求的话可以将$0 ~ /zhihu/删掉)将一行的文本赋值给awk(awk是一行一行处理的),然后使用gsub函数把str字符串中的zhuanlan.zhihu.com-替换为空字符串,然后打印完整行和处理后的str字符串并且用空格拼接

jaan@zhangdeshuaideMacBook-Pro chenge %  ls | awk '$0 ~ /zhihu/ {str=$0; gsub("zhuanlan.zhihu.com-","",str);print $0" "str }'
zhuanlan.zhihu.com-第13章-StringTable.pdf 第13章-StringTable.pdf
zhuanlan.zhihu.com-第14章-垃圾回收概述.pdf 第14章-垃圾回收概述.pdf
zhuanlan.zhihu.com-第15章-垃圾回收相关算法.pdf 第15章-垃圾回收相关算法.pdf
zhuanlan.zhihu.com-第16章-垃圾回收相关概念.pdf 第16章-垃圾回收相关概念.pdf
zhuanlan.zhihu.com-第17章-垃圾回收器.pdf 第17章-垃圾回收器.pdf
zhuanlan.zhihu.com-第18章-Class文件结构.pdf 第18章-Class文件结构.pdf
zhuanlan.zhihu.com-第19章-字节码指令集与解析举例.pdf 第19章-字节码指令集与解析举例.pdf
zhuanlan.zhihu.com-第21章-再谈类的加载器.pdf 第21章-再谈类的加载器.pdf
zhuanlan.zhihu.com-第22章-性能调优概述.pdf 第22章-性能调优概述.pdf
zhuanlan.zhihu.com-第23章-JVM监控及诊断工具-命令行篇.pdf 第23章-JVM监控及诊断工具-命令行篇.pdf
zhuanlan.zhihu.com-第25章-JVM运行时参数.pdf 第25章-JVM运行时参数.pdf
zhuanlan.zhihu.com-第26章-分析GC日志.pdf 第26章-分析GC日志.pdf
zhuanlan.zhihu.com-第二十章-类的加载过程详解.pdf 第二十章-类的加载过程详解.pdf

使用xargs命令将修改前、修改后的文件名传入mv命令作为参数

ls | awk '$0 ~ /zhihu/ {str=$0; gsub("zhuanlan.zhihu.com-","",str);print $0" "str }' | xargs -n2 mv
命令含义是命令含义是用ls命令展示当前目录的所有文件名字,然后使用awk处理,后面的描述都是awk处理的内容:过滤掉含有"zhihu"的行(没有这个需求的话可以将$0 ~ /zhihu/删掉)将一行的文本赋值给awk(awk是一行一行处理的),然后使用gsub函数把str字符串中的zhuanlan.zhihu.com-替换为空字符串,然后打印完整行和处理后的str字符串并且用空格拼接,后使用xargs将每一行的两项(默认使用空格分割)作为参数传入mv命令。

xargs命令了解更多https://www.cnblogs.com/chentiao/p/16543679.html

jaan@zhangdeshuaideMacBook-Pro chenge % ls | awk '$0 ~ /zhihu/ {str=$0; gsub("zhuanlan.zhihu.com-","",str);print $0" "str }' | xargs -n2 mv
jaan@zhangdeshuaideMacBook-Pro chenge % ls
第10章-对象实例化内存布局与访问定位.pdf
第11章-直接内存.pdf
第12章-执行引擎.pdf
第13章-StringTable.pdf
第14章-垃圾回收概述.pdf
第15章-垃圾回收相关算法.pdf
第16章-垃圾回收相关概念.pdf
第17章-垃圾回收器.pdf
第18章-Class文件结构.pdf
第19章-字节码指令集与解析举例.pdf
第21章-再谈类的加载器.pdf
第22章-性能调优概述.pdf
第23章-JVM监控及诊断工具-命令行篇.pdf
第25章-JVM运行时参数.pdf
第26章-分析GC日志.pdf
第5章-虚拟机栈.pdf
第6章-本地方法接口.pdf
第7章-本地方法栈.pdf
第8章-堆.pdf
第9章-方法区.pdf
第二十章-类的加载过程详解.pdf
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值