怎么用shell脚本将文件名改名

怎么用shell脚本将文件名改名,第1张

修改文件名可以有不同的命令方式,比如rename, mv都可以实现

对于单个的文件,可以直接使用以上的命令,那源扰前如果有大量的类似格式的文件名需要修改成其他格式的,该如何呢?

比如某次测试后,保存的文件为 Lan1.txt, Lan2.txt,....Lan100.txt

这一百个文件需要在前面添加前缀变成类似 ch7_Lan1.txt,如果你还想使用mv来一个一个...多痛苦啊

当前文件夹下,文件修改有4种方式

1. 使用while Loop加 ${//}来实现Lan到 ch7_Lan的替换

点击(此处)折叠或打开

find . -name "Lan*txt" -type f | read files

do

new=${files/Lan/李咐ch7_Lan}

mv $files $new

done

2. 充雹清分利用 awk的分隔符功能来实现

点击(此处)折叠或打开

ls *Lan* | awk 'BEGIN{FS="Lan"OFS="ch7_Lan"}{printf "mv "$0" "$1=$1print $0}' | sh

首先,修改 FS和 OFS,输入和输出的分隔符

其次,使用 awk中的命令,拼接 “mv Lan1.txt ch7_Lan1.txt”这条命令

最后,使用|sh来执行一个 shell命令来完成 mv动作

其中,$1=$1是必须的,这个是完成 Lan===>ch7_Lan的关键(其实是可以使用 $2=$2等来替换,只要一个赋值动作而已)

奇怪的是,难道没有赋值动作,分隔符的改变就不能检测出来么??

3. 使用 awk的内置命令,gsub和 system来实现替换和命令执行

点击(此处)折叠或打开

ls "*Lan*" | awk '{org=$0gsub("Lan", "ch7_Lan")system("mv "org" "$1)}'

首先保存原始的数据

其次修改 Lan为 ch_Lan

最后执行mv动作

#!/bin/sh

cd /storage/凳派emulated/0/DCIM/MadV360/

vifile=`ls *.vi`

viname=`echo ${vifile%%.*}`

mv *.jpg $viname.jpg

mv $viname.jpg /storage/码粗镇emulated/0/DCIM/迟粗FTP/

rm -f *

可以扩展到遍历整个根目录,不过要自己想想,方法很简单

批量给文件名加前缀的方法,也可以加后缀:

步骤1,下载工具软件后安装打开,然后将需要添加前缀的文件导入到软件中,也可以通闭塌过拖动文件到软件进行导入。

步骤2,这时候在左边可以看到设置界面,命名方式选择“插入”;然后在插入内容右边输入添加的前缀;最后插入位置选择“文件名头”(如果加后缀就选择“文件名尾”)。这时候在右边可以预览到新的文件名称了,可以随时修改随时预览。

步骤3,当设置好了之后就可以点击【开始重命名】按钮,启动软件程序了,处理完成后软件会d出“重命名祥手成功”的窗口。

步骤4,通过案例谨态嫌对比可以看出,修改后的文件名前面都添加了相同的前缀。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11975945.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存