背景

在平常做数据ETL和数据计算的时候,生成结果数据要落地,并且以我们指定好的文件名保存到我们指定的目录中。但是当日后进行数据回溯时,同样的程序会生成同样的文件在相同的目录中对原有的文件进行覆盖。虽然平时用Python脚本可以用自带的api进行filePath进行判断,但是对于小量数据的计算,并不用去打开编辑器写Python,完全可以使用bash脚本来完成,下面在温习bash的同时,写了两个经常操作文件的实用小功能

1.if件分支判断一个文件是否存在,如果文件存在打印相关信息并将该文件备份;如果不存在打印相关信息并创建一个新的文件。最后将输出"file product over"。

#!/bin/bash
 echo hello; echo there
 filename=ttt.sh
 if [ -e "$filename" ]; then    # 注意: "if"和"then"需要分隔,-e是判断文件存在否
     echo "File $filename exists."; cp $filename $filename.bak
 else
     echo "File $filename not found."; touch $filename
 fi; echo "file product over."

2.备份最后24小时当前目录下所有修改的文件

#!/bin/bash
BACKUPFILE=backup-$(date +%m-%d-%Y)
# 在备份文件中嵌入时间.
archive=${1:-$BACKUPFILE}
#  如果在命令行中没有指定备份文件的文件名,
#+ 那么将默认使用"backup-MM-DD-YYYY.tar.gz".
tar cvf - `find . -mtime -1 -type f -print` > $archive.tar
gzip $archive.tar
echo "Directory $PWD backed up in archive file \"$archive.tar.gz\"."
exit 0

数据咖
102 声望28 粉丝

注重积累