前几天面试,有shell脚本要求,很久没复习到了,今天开始练习。
遍历某目录(本题创建的是~/data)下的txt文件,将这些文件做一个备份,备份的文件名增加一个日期后缀,如将w1.txt备份为w1.txt_20231011
#!/bin/bash
#author:tongby
#date:2023-10-11
##后缀变量
suffix=`date +%Y%m%d`
##找到所需目录文件,for遍历
for f in `find ~/data/ -type f -name "*.txt"`
do
echo "备份文件$f"
cp ${f} ${f}_${suffix}
done
结合我们常用的Linux命令理解很容易,查找文件find,拷贝文件cp,$+定义的变量值进行拼凑。执行脚本前,一般先进行权限修改
chmod a+x etv1.sh
执行方法
1.
./etx1.sh
2.
bash etx1.sh
在练习的时候我们可以加-n检测语法是否出现错误
我们也可以看脚本执行过程
# bash -x etv1.sh
++ date +%Y%m%d
+ suffix=20231011
++ find /root/data/ -type f -name '*.txt'
+ for f in '`find ~/data/ -type f -name "*.txt"`'
+ echo 备份文件/root/data/w1.txt
备份文件/root/data/w1.txt
+ cp /root/data/w1.txt /root/data/w1.txt_20231011
+ for f in '`find ~/data/ -type f -name "*.txt"`'
+ echo 备份文件/root/data/w2.txt
备份文件/root/data/w2.txt
+ cp /root/data/w2.txt /root/data/w2.txt_20231011
+ for f in '`find ~/data/ -type f -name "*.txt"`'
+ echo 备份文件/root/data/w.txt
备份文件/root/data/w.txt
+ cp /root/data/w.txt /root/data/w.txt_20231011