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

今天又有同学问Linux下怎样批量更改文件后缀名,这个问题被别人问到三次了,所以这里给出几个解决方法

一.rename解决

1.  Ubuntu系统下

rename 's//.c//.h/' ./*

把当前目录下的后缀名为.c的文件更改为.h的文件

2.  CentOS5.5系统下

rename .c .h  *.c

把当前目录下的后缀名为.c的文件更改为.h的文件

二.shell 脚本解决

#!/bin/bash
find ./ -name *.c | while read i
do
    echo "$i";
    mv $i.c $i.h
done

三.find  xargs 解决

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

注意,第三种方案是递归的更改,会更改当前目录下及其子目录下所有匹配文件

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 详解linux下批量替换文件内容的三种方法(perl,sed,shell)

    在建设本网站的时候,发现新建了很多的网页,突然发现,每个文件都需要进行修改一样的内容,一个一个打开很是麻烦,所以,总结了一下如何快速修改一个目录下多个文件进行内容替换.第三种方法用的不多 方法一 使用perl ,命令如下: 复制代码 代码如下: find -name '要查找的文件名' | xargs perl -pi -e 's|被替换的字符串|替换后的字符串|g' 方法二 使用sed命令如下: 复制代码 代码如下: sed -i "s/原字符串/新字符串/g" `grep 原字符串

  • Linux下批量修改文件编码

    假设需要将所有ipaddr目录下的php文件,编码从gb2312转到utf8 cd ipaddr find ./ -type f -name "*.php"|while read line;do echo $line iconv -f GB2312 -t UTF-8 $line > ${line}.utf8 mv $line ${line}.gb2312 mv ${line}.utf8 $line done 上面脚本将当前ipaddr目录下的所有php文件,从gb2312转到ut

  • 在Linux中批量建立用户的shell

    最近,笔者在校园网应用平台建设中采用了Linux操作系统,为校园网用户提供DNS.Apache.POP3.SMTP.FTP等服务.由于我校学生用户数在3000人以上,笔者在建设整个应用平台的过程中特别重视保证用户管理效率.我的基本思路和做法是:利用shell为每个学生建立一个系统账号--即提供一个E-mail地址(含FTP空间账号),然后学生可以凭借其E-mail再注册论坛用户.基于这样的管理思路,笔者编写了一个批量建立用户的shell,实践证明,利用shell可以有效地管理基于Unix内核的系

  • Linux中用rename命令批量替换文件名方法实例

    前言 在Linux系统中修改文件名可以用mv命令,但是它只能对单个文件进行操作,如要要批量执行还要写shell脚本,用for语句迭代执行,不过Linux中另外一个命令支持批量替换文件名,它是rename,rename支持正则表达式匹配. 需要注意的是:rename命令在不同的Linux发行版语法格式不一样. 语法 在Debian或者Ubuntu环境下使用的语法是: rename 's/stringx/stringy/' files 而在CentOS下或者RedHat下是: rename stri

  • Linux 下rename 命令的用法第1/2页

    首先来说一下mv命令,在man mv中我们可以看到对于mv命令的介绍是这样的: mv -move(rename) files 可以看到mv命令确实有重命名的功能,但是实际应用中,它只能对单个文件重命名,命令如下: mv [path/]oldfilename [path/]newfilename "mv命令只能对单个文件重命名",这实就是mv命令和rename命令的在重命名方面的根本区别. 再来说rename命令,在man rename的说明如下: NAME rename -Rename

  • linux下批量删除utf8 bom的实现方法

    低版本的gcc编译包含bom的文件会报错 xxx.cpp:1: error: stray '\357' in program xxx.cpp:1: error: stray '\273' in program xxx.cpp:1: error: stray '\277' in program 批量删除之 grep -rIlo $'^\xEF\xBB\xBF' . | xargs sed --in-place -e 's/\xef\xbb\xbf//' 在文件末尾增加空白行 find . -nam

  • linux中批量修改文件名的脚本代码

    使用 rename 命令 ======================== NAME rename - Rename files SYNOPSIS rename from to file... ======================== 复制代码 代码如下: #! /bin/sh INIFILE="./dirlist.ini" CURPATH=$(pwd) for SERVERPATH in $(cut -d: -f1 $INIFILE) do cd $SERVERPATH cd

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

    今天又有同学问Linux下怎样批量更改文件后缀名,这个问题被别人问到三次了,所以这里给出几个解决方法 一.rename解决 1.  Ubuntu系统下 rename 's//.c//.h/' ./* 把当前目录下的后缀名为.c的文件更改为.h的文件 2.  CentOS5.5系统下 rename .c .h *.c 把当前目录下的后缀名为.c的文件更改为.h的文件 二.shell 脚本解决 #!/bin/bash find ./ -name *.c | while read i do echo

  • Python实现的批量修改文件后缀名操作示例

    本文实例讲述了Python实现的批量修改文件后缀名操作.分享给大家供大家参考,具体如下: windows和linux下都支持该程序 以下程序可以进行批量修改文件后缀名: #!/usr/bin/env python #coding:utf8 #! python3 #批量修改一个文件下的文件后缀 import sys import os def Rename(): #Path = "F:\\test\\" # windows下的文件目录 Path = input("请输入你需要操

  • PHP实现批量修改文件后缀名的方法

    本文实例讲述了PHP实现批量修改文件后缀名的方法.分享给大家供大家参考.具体如下: /** * 批量修改文件后缀名 * @param $path 文件夹路径 * @param $sext 原文件后缀名 ($sext=all说明整个目录的所有文件) * @param $dext 目的文件后缀名 * @return void */ function foreachDir($path,$sext,$dext){ $handle=opendir($path); if($handle){ while (f

  • python文件操作之批量修改文件后缀名的方法

    1.引言 需要把.dat 格式 转化成 .txt格式 2.实现 ##python批量更换后缀名 import os # 列出当前目录下所有的文件 files = os.listdir('.') #print('files',files) for filename in files: portion = os.path.splitext(filename) # 如果后缀是.dat if portion[1] == ".dat": # 重新组合文件名和后缀名 newname = porti

  • java批量修改文件后缀名方法总结

    突然需要改一堆文件的后缀名,所以想编程解决,话不多说直接上代码 java import java.io.File; import java.util.Scanner; public class FileEdit { public static void renameFiles(String path, String oldExt, String newExt) { File file = new File(path); if (!file.exists()) { System.err.print

  • 详解Linux如何将一个文件夹的所有内容授权给某一个用户?

    [问题分析] 我们可以使用chown命令,ch这里代表change(改变)的意思,own代表英文单词的owner(拥有者),连在一起就是 change owner ,改变某个文件或者文件夹的拥有者. 一般只有root用户有使用这个命令的权限,也是经常会使用到的一个命令.问题来了!如果我要把一个文件夹及其所有子内容授权给mysql用户,我该如何 操作呢? [解决方案] 我们可以加 -R 参数来实现 -R : 对目前目录下的所有档案与子目录进行相同的拥有者变更(即以递回的方式逐个变更) 比如 :  

  • 详解Linux命令与文件查找

    一.执行文件名查找 which(查找'执行文件')  //根据PATH环境变量所规范的路径查询 which [-a] command         //其中参数-a是指列出找到所有命令,而非只显示找到的第一个 例如:which ifconfig 二.文件名的查找 1.whereis(寻找特定文件) whereis [-bmsu] filename/directoryname -b :只找二进制的文件 -m :只找在说明文件manual路径下的文件 -s :只找source源文件 -u :查找不

  • Shell脚本批量修改文件后缀名代码分享

    早上本想将一些照片上传到相册中,但是由于所有照片的扩展名都是JPG而不是小写的jpg,因此造成了"格式不正确"而不能上传照片.此刻就产生了这样一个问题:使用shell脚本如何批量将所有文件的扩展名JPG都改成小写的jpg? 既然要批量替换文件名,那么肯定得用一个for循环依次遍历指定目录下的每个文件.对于每个文件,假如该文件的名称为name.oldext,那么我们必须原始文件名中挖出name,再将它与新的文件扩展名newext拼接形成新的文件名name.newext.依照这样的思路,就

  • 详解Linux下的文件标述符和文件指针

       Linux下的文件标述符和文件指针 文件标识符: 首先我们来了解一下文件标识符是什么东西? 文件描述符是计算机科学中的一个术语,是一个用于表述只想文件的引用的抽象化概念. 在linux当中,每个进程会在进程控制块(PCB)当中保存着一份文件描述符表,文件描述符就是这个表的索引,每个表都有一个指 向已经打开文件的指针. 每个linux进程都应该有三个标准的文件描述符,对应三个标准流. 整数值 名称 (unistd.h)符号常量 (stdio.h)文件流 0 Standard input ST

  • 详解Linux命令修改文件的三个时间

    Linux命令如何修改文件的三个时间 本文主要对stat和touch两个命令进行讲解. 如何查看一个文件的元数据呢?可以使用stat命令. File: 'ceshi1'  文件所在路径 Size: 4096       Blocks: 8 文件占据的磁盘块          IO Block: 4096   directory 文件类型 Device: 801h/2049d  文件所在的设备名 Inode: 378  文件索引节点号        Links: 4 被硬链接的次数 Access:

随机推荐