需求
从某地下载了一些文件,这些文件名字都是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