栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

shell 脚本实现文件名的批量修改

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

shell 脚本实现文件名的批量修改

在linux 下查找文件内容包含某个特定字符串的文件

linux在shell中执行命令并将结果赋值给变量 :data=`df` 用反引号就可以了

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 .}:删掉第一个/ 及其左边的字符串:dir1/dir2/dir3/my.file.txt
${file##*/}:删掉最后一个/  及其左边的字符串:my.file.txt
${file#*.}:删掉第一个.  及其左边的字符串:file.txt
${file##*.}:删掉最后一个.  及其左边的字符串:txt
${file%/*}:删掉最后一个/  及其右边的字符串:/dir1/dir2/dir3
${file%%/*}:删掉第一个/  及其右边的字符串:(空值)
${file%.*}:删掉最后一个.  及其右边的字符串:/dir1/dir2/dir3/my.file
${file%%.*}:删掉第一个.   及其右边的字符串:/dir1/dir2/dir3/my

记忆的方法为:
# 是去掉左边(键盘上 # 在 $ 的左边),## 最后一个;
% 是去掉右边(键盘上 % 在 $ 的右边),%% 第一个。 
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/335145.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号