2.13 批量重命名和移动

rename命令利用Perl正则表达式修改文件名。综合运用find、rename和mv。

1、用特定的格式重命名当前目录下的图像文件,最简单的方法是使用下面的脚本:

#!/bin/bash

#文件名:rename.sh

#用途:重命名.jpg和.png文件

count=1;

for img in `find . -iname ‘*.png‘ -o -iname  ‘*.jpg‘ -type f -maxdepth 1`

do

new=image-$count.${img##*.}

  echo "Renaming $img to $new"

  mv "$img" "$new"

  let count++

done

输出结果:

$./rename.sh

Renaming back.jpg to image-1.jpg

Renaming new.jpg to image-2.jpg

Renaming next.png to image-3.jpg

该脚本将当前目录下所有的.jpg和.png文件重命名,新文件名的格式为image-1.jpg、image-2.jpg等等,

2、工作原理

使用find命令进行搜索,-o用于指定多个-iname选项,后者用于执行大小写无关的匹配。-maxdepth 1指在当前目录下进行匹配。

为了跟踪图像编号,初始化count=1,下一步就是用mv命令重命名文件。因此需要构造出新的文件名。${img##*.}对处于当前循环中的文件名进行解析并获得文件扩展名。

let count++用来在每次循环中增加文件编号,

还有许多其他执行重命名操作的方法,

$ rename *.JPG *.jpg

将文件名中的空格替换成字符"_"

$ rename ‘s/  /_/g‘ *

‘s/  /_/g‘ 用于替换文件名,而*是用于匹配目标文件的通配符,它可以以*.txt或其他样式出现

转换文件名的大小写

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

将所有的.mp3文件移入给定的目录

$find path -type f -name "*.mp3" -exec mv {} target_dir \;

将所有文件名中的空格替换成字符"_"

$find path -type f -exec rename ‘s/ /_/g‘  {} \;

时间: 2024-09-29 03:50:02

2.13 批量重命名和移动的相关文章

通过DOS命令批量重命名文件

以下为提供的两种方法:遍历当前目录下的所有文件名以.avi结尾的文件,然后权限规则进行修改(规则含义请自行查找资料).第一种方法有缺陷,更改完所有的文件名后,会多改一次.请斟酌使用.第二种方法解决了第一个方法的不足. 方法一: 1 @echo off   2 setlocal enabledelayedexpansion   3    4 for /f "delims="  %%a in ('dir /a-d /s /b *.avi') do (   5     echo "

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

Web 在线文件管理器学习笔记与总结(13)重命名文件夹(14)复制文件夹

(13)重命名文件夹 ① 重命名文件夹通过 rename($oldname,$newname) 实现 ② 检测文件夹名是否符合规范 ③ 检测当前目录中是否存在同名文件夹名称,如果不存在则重命名成功 index.php: <?php require 'dir.func.php'; require 'file.func.php'; require 'common.func.php'; $path = 'file'; $path = @$_REQUEST['path'][email protected

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

批量重命名

# -*- coding:utf-8 -*- #python 2.7 #XiaoDeng #批量重命名文件 import os #抓取py当前目录 path=os.getcwd() for file in os.listdir(path): #使用os.listdir()函数获得指定目录中的内容 if 'apk' in file: if "a_signed_zipalign" in file:#多了一层逻辑,暂时先不管 RenameFile=file.replace("a_s

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

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

使用java对文件批量重命名

有时候从网络上下载的电视剧或者动漫,名字上都会被该网站加上前缀或者后缀,如图: 那么处女座的同学就不同意了,不行,我就是想让它按照我的习惯方式命名!但是呢,一个个修改是不是特别麻烦,如果是上百个呢?如果上千个呢?改到手抽筋都改不完啊!闲来没事写了个小程序,用来对这样统一格式的文件进行批量重命名,当然,必须是这种统一格式的命名方式,如上图所显示的那样,废话不多说,直接贴代码,简单易懂,无甚可将! public class CHBRenamer { public static void main(S

TotalCommander使用方法,如何对图片批量重命名

1 文件或文件夹重命名 F2 2 计算所有文件夹的大小 A/t+Shift+Enter.(这样对于文件的更新操作就更加快捷有效了,比如我的文档里面只有若干个子文件夹有更新,则别的都不用动,只要修改那些大小不一致的文件夹即可) 在此之前可能需要先显示隐藏的文件和文件夹 3 查看某一个文件或文件夹的属性 A/t+Enter(比右击然后选择属性方便多了) . 4 筛选文件(比如我想要显示所有图像文件夹里面的去年过年的时候的图片)这个在Windows里面就可以做到,在搜索框中选定时间即可. 5 如果想要

Fedora25批量重命名——rename巧用

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