【shell一天一练】date命令、for循环遍历文件

215 阅读1分钟

今日小练题目📢

写一个shell脚本,遍历某个目录下的txt文件。将这些txt文件做一个备份,备份的文件名增加一个年月日的后缀,比如将a.txt备份为a.txt_20241107

优秀作业🤌🏻

#!/bin/bash
#author: xYLiuuuuuu
#version: v1
#date: 2024-11-07

shuffix=`date +%Y%m%d`

for f in `find ./data/ -type f -name "*.txt"`
do
        echo "备份文件$f"
        cp ${f} ${f}_${shuffix}
done

敲黑板📝

  • 在shell脚本中用反引号将命令括起来
  • date

# 格式化输出
>> date +"%Y-%m-%d %H:%M:%S"
2024-11-07 22:50:48

# 显示指定日期和时间的格式
>> date -d "2023-12-14 17:39:08" +"%Y-%m-%d %H:%M:%S
2023-12-14 17:39:08

# 显示指定文件的最后修改时间
>> date -r filename +"%Y-%m-%d"
2024-08-16

# 时间加减
>> date -d "+1 day" +%Y%m%d       # 显示后一天的日期
>> date -d "-1 day" +%Y%m%d       # 显示前一天的日期
>> date -d "-1 month" +%Y%m%d     # 显示上一月的日期
>> date -d "+1 month" +%Y%m%d     # 显示下一月的日期
>> date -d "-1 year" +%Y%m%d      # 显示前一年的日期
>> date -d "+1 year" +%Y%m%d      # 显示下一年的日期
  • for循环如何遍历文件
# 1.结合find命令遍历
# 2.使用ls命令生成文件名列表,然后进行遍历
directory="/path/to/directory" 
for file in `ls "$directory"`
do 
    echo "Processing file: $file"  
done