Mac / Linux Shell 批量重命名的方法总览

Linux Shell 批量重命名的方法总览

0、用类似 GPRename 这样的图形软件进行批量重命名

1、删除所有的 .bak 后缀:

rename ‘s/\.bak$//‘ *.bak

2、把 .jpe 文件后缀修改为 .jpg:

rename ‘s/\.jpe$/\.jpg/‘ *.jpe

3、把所有文件的文件名改为小写:

rename ‘y/A-Z/a-z/‘ *

4、将 abcd.jpg 重命名为 abcd_efg.jpg:

for var in *.jpg; do mv "$var" "${var%.jpg}_efg.jpg"; done

5、将 abcd_efg.jpg 重命名为 abcd_lmn.jpg:

for var in *.jpg; do mv "$var" "${var%_efg.jpg}_lmn.jpg"; done

6、把文件名中所有小写字母改为大写字母:

for var in `ls`; do mv -f "$var" `echo "$var" |tr a-z A-Z`; done

7、把格式 *_?.jpg 的文件改为 *_0?.jpg:

for var in `ls *_?.jpg`; do mv "$var" `echo "$var" |awk -F ‘_‘ ‘{print $1 "_0" $2}‘`; done

8、把文件名的前三个字母变为 vzomik:

for var in `ls`; do mv -f "$var" `echo "$var" |sed ‘s/^.../vzomik/‘`; done

9、把文件名的后四个字母变为 vzomik:

for var in `ls`; do mv -f "$var" `echo "$var" |sed ‘s/....$/vzomik/‘`; done

10. 把.txt变成.txt_bak 的后缀

ls *.txt|xargs -n1 -i{} mv {} {}_bak

xargs -n1 –i{} 类似for循环,-n1意思是一个一个对象的去处理,-i{} 把前面的对象使用{}取代,mv {} {}_bak 相当于 mv 1.txt 1.txt_bak

find ./*.txt -exec mv {} {}_bak \;

这个命令中也是把{}作为前面find出来的文件的替代符,后面的”\”为”;”的脱意符,不然shell会把分号作为该行命令的结尾.

========================================================================

既然要批量替换文件名,那么肯定得用一个for循环依次遍历指定目录下的每个文件。对于每个文件,假如该文件的名称为name.oldext,那么我们必须原始文件名中挖出name,再将它与新的文件扩展名newext拼接形成新的文件名name.newext。依照这样的思路,就诞生了下面的脚本:

#!/bin/bash
oldext="JPG"
newext="jpg"
dir=$(eval pwd)
for file in $(ls $dir | grep .$oldext)
        do
        name=$(ls $file | cut -d. -f1)
        mv $file ${name}.$newext
        done
echo "change JPG=====>jpg done!"

下面对针对这个程序作简单说明:

1.变量oldext和newext分别指定旧的扩展名和新的扩展名。dir指定文件所在目录;

2.“ls $dir | grep .$oldext”用来在指定目录dir中获取扩展名为旧扩展名的所有文件;

3.在循环体内先利用cut命令将文件名中“.”之前的字符串剪切出来,并赋值给name变量;接着将当前的文件名重命名为新的文件名。

通过这个脚本,所有照片的扩展名都成功修改。为了使这个脚本更具有通用型,我们可以增加几条read命令实现脚本和用户之间的交互。改进版的脚本如下:

#!/bin/bash
read -p "old extension:" oldext
read -p "new extension:" newext
read -p "The directory:" dir
cd $dir
for file in $(ls $dir | grep .$oldext)
        do
        name=$(ls $file | cut -d. -f1)
        mv $file ${name}.$newext
        echo "$name.$oldext ====> $name.$newext"
        done
echo "all files has been modified."

修改后的脚本可以批量修改任意扩展名。

from: http://edsionte.com/techblog/archives/category/shell%e7%bc%96%e7%a8%8b

时间: 2024-10-01 11:23:57

Mac / Linux Shell 批量重命名的方法总览的相关文章

Linux下批量重命名的方法

rename 1.不过它要用 perl 正则表达式来作为参数, 2.举例如下: touch  test{1..5}.txt  ##使用通配符创建5个文件 rename 's/\.txt/\.doc/'  *.txt  ##将后缀为TXT的文件重命名为doc文件 rename  'y/a-z/A-Z/'  *.doc   ##批量将文件名改为大写 ps:没事就多看看文档了,,man  rename就OK啦

shell 批量重命名

shell 批量重命名 1.把文件名的第一字母批量改成a 方法一: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 [[email protected] test]# ll total 0 -rw-r--r-- 1 root root 0 Apr 14 15:02 8801.txt -rw-r--r-- 1 root root 0 Apr 14 15:02 8802.txt -rw-r--r-- 1 root root 0

教你在Win10电脑中给照片快速批量重命名的方法

我们在win10系统电脑的使用中,有时候在一些工作上的小气叫可以帮助我们在工作中做到事半功倍的效果,有小伙伴想要实现在win10中批量给图片重命名的操作方法,今天小编就来把方法分享给大家,一起来看一下教你在Win10电脑中给照片快速批量重命名的方法. 具体的方法和详细的步骤如下: 1.把所有需要重命名的照片放入同一个文件夹中,例如"2016年10月连云港旅游留念",全部选中这些照片,然后在第一张照片上点右键选择"重命名": 2.重命名为"2016年10月连

Candence下对“跨页连接器(off-page connector)”进行批量重命名的方法

parts.ports.alias等等均可以在"属性编辑器(Property Editor)"中进行查看编辑,并通过复制到Excel等表格软件来进行批量修改.之后再粘贴回去的方法进行批量编辑.但是"跨页连接器(off-page connector)"无法在Property Editor中进行查看和编辑. 选择多个off-page connector之后,通过"Ctrl+E"或者"右键-->Edit Properties"

linux-批量重命名脚本

#!/bin/bash # rename jpg and png count=1 for img in *.jpg *.png do new=image-$count.${img#*.} mv "$img" "$new" 2> /dev/null if[ $? -eq 0 ]; then echo "renaming $img to $new" let count++ fi done 将文件名中有空格的文件名的空格全部替换为- find p

Fedora25批量重命名——rename巧用

大家可能会遇到这样的类似情况,请看图: 大量文件名,重复含有相同的字符,而且并没什么用,想批量修改文件名的话,如果一个一个修改很浪费时间精力.今天就和大家分享一个fedora中简单批量重命名的方法--rename命令: 先确定需要重命名的文件所在路径: 再确定这一批文件名中哪些重复的字符需要替换,需要替换成什么字符: 打开终端,cd到需要重命名文件的目录 执行: $rename 被替换的字符 替换成的字符 文件类型范围 例如:我将图片所示目录中的所有.mp4文件名中"少男"替换成&qu

五种方法实现Linux批量重命名文件

五种方法实现Linux批量重命名文件 Linux批量重命名文件是指对某些特定的文件统一进行重新命名,以改变原来一批文件的名称,这里介绍五种方法来实现. AD: Linux批量重命名文件会涉及到改变一个字母.改变一些相连字母.改变某些位置的字母.在最前面加上某些字母.或者改变字母的大小写.完成这里五个方法基本上就会解决了Linux批量重命名的工作. 1.我想把它们的名字的第一个1个字母变为"q",其它的不变 [[email protected] mailqueue]# for i in

linux下的文件操作——批量重命名

概述:在日常工作中,我们经常需要对一批文件进行重命名操作,例如将所有的jpg文件改成bnp,将名字中的1改成one,等等.文本主要为你讲解如何实现这些操作 1.删除所有的 .bak 后缀: rename 's/\.bak$//' *.bak 注意,这个命令的格式组织如下:s/   \.bark$   / / 是s/para1/para2/ 这个有点想sed的语法,将para1匹配的字符串换成para2 2.把 .jpe 文件后缀修改为 .jpg: rename 's/\.jpe$/\.jpg/'

linux下rename用法--批量重命名

Linux的rename 命令有两个版本,一个是C语言版本的,一个是Perl语言版本的,早期的Linux发行版基本上使用的是C语言版本的,现在已经很难见到C语言版本的了, 由于历史原因,在Perl语言大红大紫的时候,Linux的工具开发者们信仰Perl能取代C,所以大部分工具原来是C版本的都被Perl改写了,因为 Perl版本的支持正则处理,所以功能更加强大,已经不再需要C语言版本的了.   1.如何区分系统里的rename命令是哪个版本的?   输入man rename 看到第一行是 RENA