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 递归修改后缀名的更多相关文章

  1. Linux下批量修改后缀名

    1.用find和xargs添加后缀名 [root@node99 yum.repos.d]# ls -ltr total 32 -rw-r--r--. 1 root root 5701 Nov 23 2 ...

  2. Linux下修改主机名步骤

    Linux下修改主机名为gpdb 步骤一.运行vi /etc/sysconfig/network命令 NETWORKING=yesHOSTNAME=gpdb 步骤二.运行hostname gpdb命令 ...

  3. 我用过的Linux命令--修改主机名

    下面的所有设置都是在CentOS中实验的,其他的Linux系统的玩法是一样的,只是配置文件的目录可能不一样. 局域网中的主机名类似于广域网中的域名,修改主机名有两种方式: (1)在当前会话中修改主机名 ...

  4. redhat系列linux系统 修改主机名的正确方法

    ##注:无特别说明,以下称呼的linux系统统一视为redhat系linux redhat系列linux系统 如果想修改主机名 很多人可能都会以为是: $hostname NEW-NAME 或者在 / ...

  5. python-argparse批量修改后缀名-batch_file_rename.py

    #!/bin/usr/env python3 __author__ = 'nxz' import os import argparse def batch_rename(work_dir, old_e ...

  6. 【Linux 运维】linux系统修改主机名

    主机名的修改:  1.命名解释: [root@localhost~]# 分别代表: 用户名(root) 主机名(localhost) 当前路径(~,当前用户的home目录) 权限标志位(#代表root ...

  7. Linux之修改主机名(永久生效)

    Linux系统安装好后,都会有默认的主机名,这里以CentOS系统为例,默认的主机名为localhost.localdomain,为了便于使用,我们常常需要修改主机名,下面演示的是永久更改主机名的方法 ...

  8. SuSE Linux上修改主机名

    1) 临时修改主机名 临时修改使用hostname即可,格式为:hostname 新主机名.Hostname命令除可以临时修改主机名外,还可以用它来查看主机名,不带参数执行它,即为查看主机名. 2)  ...

  9. Linux 永久修改主机名hostname

    前言: 由于最近用3台机器,经常切换导致有容易区别的需求. 故想修改主机名. 实验环境:Ubuntu 17 教程: 1. 使用hostname 命令先临时修改 sudo hostname your_n ...

随机推荐

  1. Linux/UNIX编程如何保证文件落盘

    本文转载自Linux/UNIX编程如何保证文件落盘 导语 我们编写程序write数据到文件中时,其实数据不会立马写入磁盘,而是会经过层层缓存.每层缓存都有自己的刷新时机,每层缓存都刷新后才会写入磁盘. ...

  2. E: Some index files failed to download. They have been**

    转: E: Some index files failed to download. They have been** 问题描述: 当使用Dockerfile从包含cuda的镜像建立新的image的时 ...

  3. 使用NATAPP内网穿透工具

    准备资料 netapp客户端 百度云下载: 官网下载:https://natapp.cn/#download 按照自己的需求进行下载 可以访问到本地的web服务 下载后解压,获得natapp_wind ...

  4. OpenGL中的坐标系统详细概括:包括Z缓冲

    一: 首先就是关于几个坐标系统的概括: 局部坐标是对象相对于局部原点的坐标,也是物体起始的坐标. 下一步是将局部坐标变换为世界空间坐标,世界空间坐标是处于一个更大的空间范围的.这些坐标相对于世界的全局 ...

  5. LNMP配置——Nginx配置 —— Nginx解析PHP

    一.配置 #vi /usr/local/nginx/conf/vhost/test.com.conf 写入: server { listen 80; server_name test.com test ...

  6. frameset、frame和div 、iframe

    框架一般应用于首页的界面排版工作.把一个网页切割成多个页面管理.frame文件一般只包含框架的布局信息,不会包含其他内容,所有的页面效果都是在各个frameset页面内显示.他们都从属于frame文件 ...

  7. 【数据结构与算法】——链表(Linked List)

    链表(Linked List)介绍 链表是有序的列表,但是它在内存中是存储如下: 链表是以节点的方式来存储的,是链式存储. 每个节点包含data域,next域:指向下一个节点. 如图:链表的各个节点不 ...

  8. Codeforces Round #541 F. Asya And Kittens

    题面: 传送门 题目描述: Asya把N只(从1-N编号)放到笼子里面,笼子是由一行N个隔间组成.两个相邻的隔间有一个隔板. Asya每天观察到有一对想一起玩,然后就会把相邻的隔间中的隔板取出来,使两 ...

  9. 学习Python的书籍——入门到进阶

    入门读物 <Python基础教程>(Beginning Python From Novice to Professional) <Python学习手册>(Learning Py ...

  10. 画直线的算法之DDA算法+代码实现(法一)

    DDA(数值微分法)基于直线微分方程生成直线. 点xi,yi满足直线方程yi=kxi+b, 若xi增加一个单位,则下一步点的位置(xi + 1,yi+1)满足yi+1=k(xi + 1)+ b. 即y ...