Linux递归修改后缀名实现方式

 更新时间:2025年11月21日 08:36:07   作者:氷泠  
文章主要介绍了如何使用find、awk和xargs命令来递归地修改文件后缀名,通过find命令查找特定后缀的文件,awk命令提取文件路径,xargs命令将路径传递给`mv`命令进行重命名

1、修改命令

需要用到:

  • find
  • awk
  • xargs

递归修改命令如下:

find . -name '*.XXX' | awk -F "." '{print $2}' | xargs -i -t mv ./{}.XXX ./{}.XXXX

XXX后缀修改为XXXX

2、find

find用来在指定目录下查找文件,位于参数之前的字符串都被视为需要查找的目录。

find . -name '*.XXX'中:

  • .:表示当前文件夹
  • -name:表示文件名符合name的文件,有一个类似的-iname会忽略大小写
  • *.XXX:表示寻找所有的XXX后缀的文件

其他常用例子:

  • find . -type f:递归列出一般文件
  • find . -ctime -20:递归列出最近20天内更新过的文件
  • find /var/log -type f -mtime +7 -ok rm {} \;:查找/var/log下更新时间在7日以前的普通文件,并在删除之前询问
  • find . -type f -perm 644 -exec ls -l {} \;:查找当前目录下权限为644的文件
  • find / -type f -size 0 -exec ls -l {} \;:查找/下文件大小为0的普通文件并列出完整路径

3、awk

awk是一种处理文本文件的语言,是一个强大的分析工具。

awk -F "." '{print $2}'中:

  • -F:指定输入文件拆分分隔符,因为需要修改后缀名,后缀名与主文件名由.分隔,因此后面加上"."参数
  • '{print $2}'print表示打印,$在awk中表示字段引用,这里$2表示引用第二个字段,字段根据前面的-F参数进行分隔。
  • 因为find打印出来的是./a/b/c.XXX,因此print $2会打印其中第二个字段,就是路径/a/b/c,而print $1为空(因为第一个.之前没有其他内容),print $3为后缀名

4、xargs

xargs是给命令传递参数的一个过滤器,可以将管道或者标准输入数据转换为命令行参数,默认的命令为echo。使用xargs可以对不支持管道的命令添加类似管道的功能,比如:

find . -name '*.jpg' | ls -l 
# 错误,但是能执行,执行的结果仅仅是ls -l的结果

find . -name '*.jpg' | xargs ls -l 
# 正确

xargs -i -t mv ./{}.XXX ./{}.XXXX中:

  • -i:表示将xargs的每项名称,一般是一行一行赋值给后面的{}
  • -t:可选,表示先打印需要执行的命令(这里是先打印mv)再执行
  • mv:重命名
  • {}:配合-i使用,这里的{}表示前一步awk中的路径名,对每一个路径都执行一次mv,也就是修改后缀名

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Linux终端更改字体实现方式

    Linux终端更改字体实现方式

    文章介绍了如何在命令终端中修改字体,包括查看本地字体目录、了解字体格式、设置字体大小、安装额外字体等方法,并提供了一个实际操作的示例
    2025-11-11
  • Apache中.htaccess文件功能

    Apache中.htaccess文件功能

    .htaccess文件的功能:"分布式配置文件"提供了针对目录改变配置的方法,即:在一个特定的文档目录中放置一个包含一个或多个指令的文件,以作用于此目录及其所有子目录。
    2011-06-06
  • Linux查看文件大小的几种方法汇总

    Linux查看文件大小的几种方法汇总

    这篇文章主要介绍了Linux查看文件大小的几种方法汇总,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • Linux CentOs7 ping网址未知的名称或服务问题

    Linux CentOs7 ping网址未知的名称或服务问题

    文章介绍了如何在Linux虚拟机中解决IP地址配置问题的步骤,包括检查IP、查看网络配置、编辑网络配置文件以及重启网络服务,最终成功获取IP地址并能ping通
    2024-12-12
  • Linux使用dd命令来复制和转换数据的操作方法

    Linux使用dd命令来复制和转换数据的操作方法

    Linux 中的 dd 命令是一个功能强大的数据复制和转换实用程序,它以较低级别运行,通常用于创建可启动的 USB 驱动器、克隆磁盘和生成随机数据等任务,本文给大家介绍了Linux 如何使用dd命令来复制和转换数据,需要的朋友可以参考下
    2025-01-01
  • 一文详解Linux系统下文件操作相关的系统调用

    一文详解Linux系统下文件操作相关的系统调用

    在Linux系统中,文件操作是程序开发中不可或缺的一部分,Linux提供了丰富的系统调用来实现文件的读写、打开、关闭以及控制等功能,本文将详细阐述Linux系统中文件操作相关的系统调用,需要的朋友可以参考下
    2025-11-11
  • ubuntu下Matlab_Linux添加工具包操作步骤

    ubuntu下Matlab_Linux添加工具包操作步骤

    本文以rvctools为例给大家通过图文并茂的形式介绍ubuntu下Matlab_Linux添加工具包的教程,需要的朋友可以参考下
    2018-03-03
  • Apache下error.log文件太大的处理方法

    Apache下error.log文件太大的处理方法

    清除error.log、access.log并限制Apache日志文件大小的方法,在网上搜了下相应的资料,并按照如下步骤做了一遍,网站恢复正常
    2012-07-07
  • linux中ftp服务搭建需要注意的地方

    linux中ftp服务搭建需要注意的地方

    本篇文章给大家总结了linux中ftp服务搭建需要注意的地方,大家学习后能够少走很多弯路,一起参考下吧。
    2018-03-03
  • Linux中在不破坏磁盘的情况下使用dd命令

    Linux中在不破坏磁盘的情况下使用dd命令

    今天小编就为大家分享一篇关于Linux中在不破坏磁盘的情况下使用dd的文章,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10

最新评论