📅  最后修改于: 2023-12-03 15:41:28.813000             🧑  作者: Mango
本篇文章主要介绍如何在Shell-Bash中编写一个简单的脚本来获取指定日期范围内的文件,并将其复制到指定目录中。
在开始编写脚本之前,我们需要创建一个目录结构以存储待复制的文件和输出的结果。以下是我们需要的目录结构:
- project/
- input/
- file1.txt
- file2.txt
- file3.txt
- output/
在input
目录中含有多个文件,我们需要实现的功能是将input
目录中的所有文件按照指定日期范围内的文件复制到output
目录中。
脚本总体的思路是遍历input
目录中的所有文件,将符合日期要求的文件复制到output
目录中。以下是完整的脚本代码:
#!/bin/bash
start_date="2021-01-01"
end_date="2021-12-31"
for file in $(ls ./input); do
file_date=$(stat -c "%y" ./input/$file | cut -d ' ' -f1)
if [[ $file_date >= $start_date && $file_date <= $end_date ]]; then
cp ./input/$file ./output
fi
done
start_date="2021-01-01"
end_date="2021-12-31"
首先我们需要设定起始日期和结束日期,上述例子中我们设定的起始日期是2021-01-01
,结束日期是2021-12-31
。
for file in $(ls ./input); do
我们需要遍历input
目录下的所有文件,并对每个文件进行判断。这里我们使用ls
命令获取input
目录下的文件列表,并使用for
循环对其进行遍历。
file_date=$(stat -c "%y" ./input/$file | cut -d ' ' -f1)
我们使用stat
命令获取文件的最后修改日期,并使用cut
命令截取日期部分,存储到file_date
变量中。
if [[ $file_date >= $start_date && $file_date <= $end_date ]]; then
接下来我们需要对文件的日期进行判断,若满足指定日期范围则执行文件复制操作。这里使用[[ ... ]]
语法来进行日期范围的比较。
cp ./input/$file ./output
最后我们使用cp
命令将符合要求的文件复制到output
目录中。
要执行该脚本,我们可以在终端中切换到project
目录,并执行以下命令:
$ ./copy_files.sh
如果一切正常,该脚本会将符合日期范围的文件复制到output
目录中。
本文介绍了如何使用Shell-Bash编写一个简单的脚本,该脚本可获取指定日期范围内的文件并将其复制到指定目录中。脚本代码具有可读性,易于理解和修改,可以用于各种不同的项目中。