Linux 写一个脚本 查询所有六个月之前的文件夹并压缩 压缩完成后发送到新建的文件夹下
时间: 2023-08-31 19:24:09 浏览: 152
### 回答1:
在 Linux 中, 你可以使用 `find` 命令来查找六个月之前的文件夹, 然后使用 `tar` 命令将其压缩. 然后使用 `mv` 命令将压缩文件移动到新建文件夹下.
脚本可能如下:
```bash
#!/bin/bash
# 新建文件夹
mkdir -p /path/to/new/folder
# 查找六个月之前的文件夹
old_folders=$(find /path/to/folders -type d -mtime +180)
# 遍历查找到的文件夹并压缩
for folder in $old_folders; do
tar -zcvf "$folder.tar.gz" "$folder"
done
# 移动压缩文件到新建文件夹
mv /path/to/folders/*.tar.gz /path/to/new/folder
```
在脚本中, /path/to/folders 是你要查找文件夹的路径, /path/to/new/folder 是你要存储压缩文件的新建文件夹的路径.
-mtime +180 代表 180天之前的修改时间
注意: 脚本在执行之前需要进行修改路径,请根据实际情况修改
### 回答2:
在Linux系统中,可以使用Shell脚本来实现查询所有六个月之前的文件夹并压缩,然后将压缩文件发送到新建的文件夹下。以下是一个示例脚本:
```shell
#!/bin/bash
# 定义六个月前的时间戳
six_months_ago=$(date -d "6 months ago" +"%s")
# 定义压缩文件输出目录
output_dir="compressed_folders"
# 创建压缩文件输出目录
mkdir -p "$output_dir"
# 遍历当前目录下的所有文件夹
for folder in */
do
# 判断文件夹的修改时间是否在六个月之前
modified_time=$(stat -c "%Y" "$folder")
if [ "$modified_time" -lt "$six_months_ago" ]; then
# 压缩文件夹
tar -czf "$output_dir/${folder%/}.tar.gz" "$folder"
fi
done
```
此脚本首先获取当前时间六个月前的时间戳,并创建一个目录用于存放压缩文件。然后,它遍历当前目录下的所有文件夹,获取文件夹的修改时间,并与六个月前的时间戳进行比较。如果文件夹的修改时间早于六个月前的时间戳,则将文件夹压缩为.tar.gz文件,并存放到压缩文件输出目录中。
你可以将以上代码保存为名为`compress_folders.sh`的文件,并在终端中运行`bash compress_folders.sh`来执行该脚本。执行完成后,六个月之前的文件夹将被压缩并存放到新建的"compressed_folders"文件夹下。
### 回答3:
要编写一个脚本来查询并压缩所有六个月之前的文件夹,并将压缩文件发送到一个新建的文件夹下面,可以按照以下步骤进行:
1. 首先,创建一个新的文件夹来存放压缩文件:
```
mkdir 新文件夹
```
2. 然后,使用find命令来查找所有六个月之前的文件夹,并压缩它们:
```
find 目标文件夹 -maxdepth 1 -type d -mtime +180 -exec tar -czvf {}.tar.gz {} \;
```
这里,目标文件夹是要查询的文件夹的路径,-maxdepth 1 表示只在目标文件夹下搜索,-type d 表示只查找文件夹,-mtime +180 表示查找六个月之前的文件夹,-exec tar -czvf {}.tar.gz {} \; 表示将找到的文件夹使用tar命令压缩并以文件夹名为文件名保存。
3. 最后,将压缩文件移动到新建的文件夹下面:
```
mv *.tar.gz 新文件夹
```
整个脚本的代码如下:
```bash
#!/bin/bash
# 创建新文件夹
mkdir 新文件夹
# 查找并压缩六个月之前的文件夹
find 目标文件夹 -maxdepth 1 -type d -mtime +180 -exec tar -czvf {}.tar.gz {} \;
# 移动压缩文件到新文件夹
mv *.tar.gz 新文件夹
```
将脚本保存为一个.sh文件,然后在终端中运行该脚本即可完成查询、压缩和文件移动的操作。
阅读全文