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系统下使用U盘的方法

    Linux系统下使用U盘的方法

    在linux系统之中, 一切设备皆文件, 所以我们的U盘也是一个文件.磁盘设备被抽象成sda文件, U盘设备被抽象成sdb文件。这篇文章主要介绍了Linux系统下使用U盘的方法,需要的朋友可以参考下
    2016-10-10
  • Memcached 分布式缓存实现原理简介

    Memcached 分布式缓存实现原理简介

    这篇文章主要介绍了Memcached 分布式缓存实现原理简介,具有参考价值,需要的朋友可以参考下。
    2016-06-06
  • Linux 相对路径和绝对路径的使用

    Linux 相对路径和绝对路径的使用

    这篇文章主要介绍了Linux 相对路径和绝对路径的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • VSCode连接实验室服务器Xshell,Xftp向服务器传输文件的方法(win10)

    VSCode连接实验室服务器Xshell,Xftp向服务器传输文件的方法(win10)

    这篇文章主要介绍了VSCode连接实验室服务器,Xshell,Xftp向服务器传输文件(win10),本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-08-08
  • 详解Linux批量更改文件后缀名

    详解Linux批量更改文件后缀名

    本篇文章主要介绍了详解Linux批量更改文件后缀名,主要是使用了rename,有需要的朋友可以了解一下。
    2016-11-11
  • 把windows下的字体安装到Linux系统下的方法介绍

    把windows下的字体安装到Linux系统下的方法介绍

    Linux(Fedora/Ubuntu/CentOS)的字体实在不尽如人意,而且在网页及文档显示时很多字无法显示出来,特别多的空白和乱码,其实,我们可以把windows下的字体和自己心仪的字体添加到Linux中,本文将介绍如何在Linux下添加字体
    2018-03-03
  • Linux解决rsyslog服务占用内存过高的办法

    Linux解决rsyslog服务占用内存过高的办法

    当我们使用top命令查看内存占用时,发现rsyslogd内存占用很高,所以接下来这篇文章给大家介绍了Linux解决rsyslog服务占用内存过高的办法,文中有详细的图文介绍,需要的朋友可以参考下
    2024-05-05
  • CentOS 6.8 NFS 文件共享设置的方法

    CentOS 6.8 NFS 文件共享设置的方法

    这篇文章主要介绍了CentOS 6.8 NFS 文件共享设置的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-01-01
  • Linux磁盘空间占用率100%的排查方法

    Linux磁盘空间占用率100%的排查方法

    使用 Linux 操作系统时,可能会遇到磁盘空间不足的错误,这种错误通常会导致系统运行缓慢或崩溃,本文将介绍磁盘排查的方法,文中通过代码示例给大家介绍的非常详细,需要的朋友可以参考下
    2024-02-02
  • VMware下CentOS 7 安装图文教程

    VMware下CentOS 7 安装图文教程

    这篇文章主要为大家详细介绍了VMware下CentOS 7 安装图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03

最新评论