一、脚本要求
1.所有操作在/python下
2.批量创建12个以py后缀结尾的文件,文件名中必须包含_hcip,文件名除了_hcip固定字符串外,文件名还包含8个小写随机的字符。
3.创建的12个文件后缀名改为大写的PY,固定字符串改为_hcie
二、脚本内容
#!/bin/bash
##########################################################
#File Name:create_file.sh
#Version:V1.0
#Aurhor:
#Emali:
#Created Time:2021-06-15 02:56:59
#Description: create files & modify files
##########################################################
if [ -d /python ];then
cd /python
else
mkdir /python
cd /python
fi
for i in {1..12}
do
file_name=$(echo $RANDOM |md5sum |cut -c 1-8)
touch ${file_name}_hcip.py
done
for files in $(ls /python)
do
file1=$(echo $files |cut -d '_' -f1)
mv $files ${file1}_hcie.PY
done
三、脚本运行结果
[root@control python]# /scripts/create_file.sh
[root@control python]# ll
total 0
-rw-r--r-- 1 root root 0 Jun 15 04:26 4272db00_hcie.PY
-rw-r--r-- 1 root root 0 Jun 15 04:26 51989a58_hcie.PY
-rw-r--r-- 1 root root 0 Jun 15 04:26 75075364_hcie.PY
-rw-r--r-- 1 root root 0 Jun 15 04:26 7a272319_hcie.PY
-rw-r--r-- 1 root root 0 Jun 15 04:26 7d76af2f_hcie.PY
-rw-r--r-- 1 root root 0 Jun 15 04:26 977e73d6_hcie.PY
-rw-r--r-- 1 root root 0 Jun 15 04:26 9e4386a0_hcie.PY
-rw-r--r-- 1 root root 0 Jun 15 04:26 a35d5337_hcie.PY
-rw-r--r-- 1 root root 0 Jun 15 04:26 b9cb6458_hcie.PY
-rw-r--r-- 1 root root 0 Jun 15 04:26 b9d3349e_hcie.PY
-rw-r--r-- 1 root root 0 Jun 15 04:26 c3e589a2_hcie.PY
-rw-r--r-- 1 root root 0 Jun 15 04:26 e4f82be8_hcie.PY
附:将jpeg格式文件改成jpg格式为例
用脚本创建10个文件,以jpeg作为后缀,代码如下:
#!/bin/sh
for ((i=0;i<=10;i++))
do
touch ${i}.jpeg
done
执行完上面的脚本后会看见在当前目录下生成10个文件,文件名的构成为name.suffix
为了批量更改当前目录下的文件,我们需要遍历当前目录,获得需要更改文件的name,然后与新的文件后缀进行拼接,形成新的文件名name.newsuffix。
代码如下:
#!/bin/sh
oldsuffix="jpeg"
newsuffix="jpg"
dir=$(eval pwd)
for file in $(ls $dir | grep .${oldsuffix})
do
name=$(ls ${file} | cut -d. -f1)
mv $file ${name}.${newsuffix}
done
echo "change jpeg to jpg successd!"
- oldsuffix是文件旧的后缀,newsuffix是文件新的后缀
- $(cmd)是命令替换,会在语句运行时执行cmd命令,然后返回cmd命令的执行结果;eval 的作用是再次执行命令行处理(不是对一个命令执行两次),也就是将eval后跟的参数整合成正确的命令行命令执行。$(eval pwd)执行后返回的结果是脚本所在的目录路径。
- 在循环语句中我们使用cut命令将匹配的文件name剪切出来。cut命令从文件的每一行剪切字节、字符和字段并将其送至标准输出。参数-d用于自定义分隔符,默认为制表符,程序中的-d.表示以.作为分隔符;参数-f指定截取显示哪个区域,-f1表示截取第一个区域,也就是文件名的name。
总结
到此这篇关于Shell脚本之文件批量创建与修改的文章就介绍到这了,更多相关Shell脚本文件批量创建修改内容请搜索极客世界以前的文章或继续浏览下面的相关文章希望大家以后多多支持极客世界! |
请发表评论