写一个shell程序,遍历某个目录下的所有文件,找到不是今天的文件,进行压缩
时间: 2023-08-31 14:34:29 浏览: 104
【shell】遍历文件夹下所有文件
### 回答1:
您可以使用下面的代码来遍历某个目录下的所有文件,并找到不是今天创建的文件,并将其压缩:
```
#!/bin/bash
# 遍历目录中的所有文件
for file in /path/to/directory/*
do
# 获取文件的创建时间
create_time=$(stat -c %y "$file" | cut -d' ' -f1)
# 获取今天的日期
today=$(date +%Y-%m-%d)
# 如果文件不是今天创建的,则进行压缩
if [ "$create_time" != "$today" ]
then
gzip "$file"
fi
done
```
需要注意,这段代码假设文件的创建时间是文件系统中保存的,如果文件系统不保存文件的创建时间,则无法使用这段代码。
此外,还可以使用其他命令来获取文件的修改时间,比如 `stat -c %y` 和 `find` 命令。
希望这能帮到您!
### 回答2:
编写一个shell程序可以使用bash脚本实现。下面是一个具体实现的示例:
```bash
#!/bin/bash
# 定义目标目录
target_dir="/path/to/directory"
# 获取今天的日期
today=$(date +%Y%m%d)
# 遍历目标目录下的所有文件
for file in "$target_dir"/*
do
# 检查文件是否是今天的文件
if [[ ! -f "$file" || $(date -r "$file" +%Y%m%d) == "$today" ]]; then
continue
fi
# 压缩文件
gzip "$file"
done
```
- 首先,你需要将`/path/to/directory`替换为你要遍历的目录的实际路径。
- 脚本使用`date +%Y%m%d`命令获取当前日期,将其保存在变量`today`中。
- 使用`for`循环遍历目标目录下的所有文件。
- 对于每个文件,使用`-f`选项检查它是否是普通文件,并且使用`date -r`命令获取文件的修改日期,并与`today`进行比较。
- 如果文件不是今天的文件,则使用`gzip`命令对其进行压缩。
### 回答3:
以下是一个使用Shell脚本遍历某个目录下所有文件,找到不是今天的文件并进行压缩的示例代码:
```shell
#!/bin/bash
# 设置目标文件夹路径
target_dir="/path/to/target/directory"
# 获取今天的日期
today=$(date +%Y-%m-%d)
# 遍历目标文件夹下的所有文件
for file in $target_dir/*; do
# 检查文件是否为普通文件
if [ -f "$file" ]; then
# 获取文件的最后修改日期
last_modified=$(date -r "$file" +%Y-%m-%d)
# 检查文件是否为今天之前的文件
if [[ "$last_modified" < "$today" ]]; then
# 使用gzip命令进行压缩,生成新的文件名
gzip "$file"
fi
fi
done
```
你可以将上述代码保存到一个Shell脚本文件中,例如`compress_files.sh`,然后通过运行`./compress_files.sh`命令来执行该脚本。
请注意,示例代码中的`/path/to/target/directory`需要替换为你要遍历的目标文件夹的实际路径。
阅读全文