简单批量更改文件名脚本,Shell脚本攻略学习总结
分类:pc28.am神测网

shell文件名分割,重命名移动批量文件

Linux Shell脚本计策学习总计:三

Shell脚本第四篇

粗略批量更动文件名脚本

 

 

 

 

1.分割出文件名和扩展名

依靠扩大名切分文件名

001

#!/bin/bash

file="sample.jpg"

第一,大家先来看七个例证:

# 文件校验

#rename.sh

name=${file%.*}

[delphi] 

002

#用途:重命名jpg png 文件  www.2cto.com  

echo "File name is: $name"

file_jpg="sample.jgp"  

md5sum filename

count 1;

 

name=${file_jpg%.*}  

003

for img in *.jph *.png

输出:

echo File name is : $name  

 

do

File name is: sample

出口结果:  

004

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

这里的${file%.*}的野趣是:

File name is sample  

# 按数组排序

mv "$img" "$new" 2>/dev/null

用file的内容,从右侧相称字符串,这里是.*,说明

 

005

if [ $? -eq 0 ];then

遇见'.'号结束,然后收取剩余的右手的一对作为结果

[delphi] 

sort -n filename.txt

echo "renameing $img to $new"

返回

extension=${file_jpg#*.}  

006

let count

extension=${file#*.}

echo Extension is : $extension  

 

fi

echo "File extension is: $extension"

输出结果:Extension is : jpg  

007

don

 

 

# 按逆序排序

#!/bin/bash #rename.sh #用途:重命名jpg png 文件 www.2cto.com count 1; for img in *.jph *.png do new=image-$count.${img##*.} mv $img $new...

输出:

行事原理

008

File extension is: jpg

在率先个职责中,为了从“名称.扩张名”中获得文件的名字,大家运用了%操作符

sort -r file.txt

这里的${file#*.}的野趣是:

${$var%.*}的意义是:

009

那和前面包车型客车充裕相反,他是从左侧起始相配字符串,遇见'.'

1.从$var中删去位于%左边手的通配符所相配的字符串。通配符从右向左实行相配

 

后,把剩下的局地给截取下来当作结果重临

2.给var赋值,所以结果会输出文件名

010

 

 

# 按月度排序

 

%属于非贪婪操作。它从右向左找寻相配通配符的最短结果。还会有三个操作符 %% 。这几个操作符与 % 相似,但作为形式真的贪婪的,那代表它会同盟符合条件的最长的字符串。

011

扩展:

 

 

此间一个%号和#号是短相称,即首先次相见时就长逝

在其次个职责中,原理是和 % 相似的,只是它的运营进程是从左到右。

012

而能够动用%%和##做为长相配

操作符 ## 则用 *. 从左到右施行贪婪匹配。

sort -M file.txt  

 

 

013

 

下图突显二个例子:

 

3.重命名和平运动动批量文本

其中 URL=“www.google.com”

014

1.当从相机中程导弹出的文书名字不统不平时,可以施行统一的变动

 

# 按月度排序( 遵照1月,5月,二月,那样的顺序排序 )

名字,如钦命在某一天等

图片 1

015

#! /bin/bash

 

 

# Filename:renameJpgAndPng.sh

批量重命名文件

016

    # Description: Rename jpg and png files

上面这么些例子达成的是批量管理文件重命名操作,帮助的格式丰硕:

# 决断二个文本是不是业已排序

 

第一,大家要求在目录下放置测量试验的图形,如下图所示:

017

count=1

 

#!bin/bash

for img in *.png *.jpg

图片 2

018

do

 

# filename

new="image-$count.${img##*.}" # to be like 'image-x.jpg'

里面rename.sh正是完结效果与利益的本子文件,我们运维脚本程序,获得如下所示的出口:

019

mv "$img" "$new" 2> /dev/null

 

sort -C file;

 

图片 3

020

 

 

if [ $? -eq 0 ]; then

if [ $? -eq 0 ];

大家再来看看文件的状态是否真的改动了:

021

then 

 

     echo sored

echo "Renaming $img to $new."

图片 4

022

let count

 

else

fi

下边给出完成的本子程序:

023

done

[delphi] 

     echo unsored

 

#!/bin/bash  

024

演说:定义八个数字变量,并读取当前文件夹下的装有以png和jpg

#rename.sh  

fi

最终的公文,变量new是新文件的格式,先是加image-前缀,

count=1;  

025

和$count,并开展长相配,获取文件后缀名。然后经过mv命令来

for img in *.[jJ][pP][gG] *.[pP][nN][gG]  

 

挪动重命名,若爆发错误2(stderr),则重定向到/dev/null进

do  

026

行回收废。$? 的意思是上一次操作重临的结果,如若是0,则

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

#假诺要联合三个排序过的文本

表示操作成功,则输出调换到功唤醒

mv "$img" "$new" 2> /dev/null  

027

 

  

sort -m sorted1 sorted2

1.分割出文件名和庞大名 file=sample.jpg name=${file%.*} echo File name is: $name 输出: File name is: sample 这里的...

if [ $? -eq 0 ]  

028

then  

 

echo "Renaming $img to $new"  

029

let count ;  

cat  data.txt

fi  

030

done  

1 mac    2000

 

031

Shell脚本计谋学习总括:三 根据扩大名切分文件名 首先,大家先来看两个例证: [delphi] file_jpg=sample.jgp name=${file_jpg%.*} echo File name is...

2 winxp  4000

032

3 bsd     1000

033

4 linux   1000

034

#有好些个措施对这段文本排序

035

 

036

#实践用哪一列进行排序

037

 

038

sort -nrk 1 data.txt  

039

winxp 4000

040

mac 2000

041

linux 1000

042

bsd 1000

043

 

044

# 依赖第一列,以逆序格局排序

045

 

046

#衣裳第二列进行排序

047

sork -k 2 data.txt

048

 

049

bsd 1000

050

linux 1000

051

mac 2000

052

winxp 4000

053

 

054

# uniq  去重新字符

055

 

056

cat uniq .txt | uniq

057

 

058

cat uniq.txt | uniq -u  # 只展现未重新过的字符串

059

 

060

cat uniq.txt | uniq -c  #为了总结各行在文书中出现的次数

061

 

062

cat uniq.txt | uniq -d  #寻觅文件中重新的行

063

 

064

cat data.txt

065

u:01:gnu

066

d:04:linux

067

u:01:bash

068

u:01:back

069

# 大家供给 01, 04 中间的字符串作为独一的键盘,能够经过忽略前2个字符(-s 2) 并利用-w 选项(-w 2) 钦定用于相比较的最大字符数的点子来选定该键

070

 

071

sort data.txt | uniq -s 2 -w 2

072

 

073

 

074

uniq -z file.txt  # 用uniq 命令生成富含0值字节的结束字符的出口

075

 

076

uniq -z file.txt | xargs  -0 rm   # 删除全部内定的文件,假诺某些文件出现数次,uniq命令只会将以此文件写入stdout一回

077

 

078

# 有时文件名

079

temp_file = "/tmp/var.$$"

080

echo $temp_file;

081

# .$$作为丰盛的后缀会被扩充成当下剧本的长河ID

082

 

083

# 生成有时测量试验文件

084

dd if=/dev/zero bs=100k count=1 of=data.file

085

 

086

#分开文件

087

split -b 10k data.file

088

 

089

#细分文件增加前缀名

090

split -b 10k data.file -d -a 4 split_file

091

 

092

#假如不想暗许依据数据块还切割

093

split -l 10 data.file 

094

# 分割成七个文本,种种文件10行

095

 

096

# 提取文件扩充名必需借助%

097

file_jpg = "sample.jpg"

098

name=${file_jpg%.*}

099

echo File name Is $name;

100

# ${VAR %.*} 的意义是,删除%动手的通配符,非贪婪情势

101

# ${VAR%%.*} 从右向左施行贪婪形式相配

102

 

103

# 借助#操作符号,可以提取文件名中的.jpg

104

jpg=${file_jpg#.*}

105

echo $jpg

106

# ${VAR#.*} 是从$VAHaval中删除位于#动手的通配符,通配符从左向右进行相称

107

# ${VAR##*.}  贪婪形式

108

 

109

# 实现批量重命名shell脚本

110

 

111

#!/bin/bash

112

#filename rename

113

#最早化变量

114

count=1

115

#循环全部文件夹内的jpg文件

116

for img in *.jpg

117

        do

118

                # 生成新文件名

119

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

120

               #举手投足文件 2> /dev/null 标准错误指向空,防止打字与印刷到终点

121

                mv "$img" "$new" 2> /dev/null

122

              # 假使通配符*.jpg 未有相配到人和图像文件,那么shell会将通配符接是为字符串。从地方的出口能够见到荒诞不经的.jpg文件,由此

123

              # 如果 mv *.jpg image-x.jpg 明确会发生错误,if ( $? -eq ] 检查退出状态($?) 若是近些日子进行的下令没错误,那么$?的值是0,不然

124

             #  会重回非零值,当mv命令出错开上下班时间也会回到非0值,幸免爆发Renameing file 为空,计数也相加

125

                if [ $? -eq 0 ];

126

                then

127

                        echo "Renameing $img to $new"

128

                        let count

129

                fi

130

done

131

 

132

将*.JPG 更名卫*.jpg

133

rename *.JPG *.jpg

134

 

135

将文件名中的空格替换为_

136

rename 's/ /_/g' *

137

# 's/ /_/g' 用于替换文件名, 而* 用于相称文件名的通配符

138

 

139

文本名转移大小写

140

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

141

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

142

  

143

为了将DVD文本转移定的目录,能够选取

144

find path  -type f -name "*.mpe" -exec mv {} target_dir ;

145

 

146

将享有的公文名中的空格替换为字符_

147

find path -type f -exec rename '/s /_/g' {} /;

 

001 # 文件校验 002 md5sum filename 003 004 # 按数组排序 005 sort -n filename.txt 006 007 # 按逆序排序 008 sort -r file.txt 009 010 # 按月度排序...

本文由pc28.am发布于pc28.am神测网,转载请注明出处:简单批量更改文件名脚本,Shell脚本攻略学习总结

上一篇:使用awk提取文本,awk用法详解 下一篇:没有了
猜你喜欢
热门排行
精彩图文