Linux系统 写一个脚本 查询六个月之前的文件并压缩
时间: 2023-02-11 19:06:26 浏览: 76
可以使用 shell 脚本实现查询六个月之前的文件并压缩。
示例代码如下:
```
#!/bin/bash
# Define the directory to search
dir_to_search="/path/to/directory"
# Define the date six months ago
date_six_months_ago=$(date -d '6 months ago' +%Y-%m-%d)
# Find all files modified six months ago or earlier
find $dir_to_search -type f -mtime +180 -print0 | xargs -0 tar -czvf old_files.tar.gz
```
解释:
- `dir_to_search` 变量定义了要搜索的目录
- `date_six_months_ago`变量定义了六个月前的日期
- 使用`find`命令查找六个月之前修改过的文件,并将它们打包成 `old_files.tar.gz`
- `-mtime +180` 参数表示在 180 天以前修改过的文件
- `-print0` 以 null 终止符号终止文件名,防止文件名中包含空格或特殊字符导致问题
- `xargs -0` 使用 null 终止符号来处理文件名,以保证稳健性
这只是一个简单的示例,您可以根据自己的需求来调整这些命令和参数.
相关问题
Linux系统 写一个脚本 查询所有六个月之前的文件夹并压缩 压缩完成后把压缩文件移至指定的文件夹下
可以使用以下脚本实现该功能:
```bash
#!/bin/bash
# 获取当前时间的六个月之前的时间戳
time_six_months_ago=$(date -d "-6 months" +%s)
# 查询所有六个月之前的文件夹并压缩
find /path/to/folders -type d -mtime +182 -exec tar -zcvf {}.tar.gz {} \;
# 移动所有压缩文件至指定文件夹下
find /path/to/folders -type f -name "*.tar.gz" -exec mv {} /path/to/destination/folder \;
```
上面这个脚本中,先使用 `date` 命令获取当前时间的六个月之前的时间戳, 然后使用 `find` 命令查询所有六个月之前的文件夹(-type d)并且使用 -mtime +182 参数筛选出修改时间在六个月之前的文件夹,最后用 -exec 参数调用 tar 命令对这些文件夹进行压缩,输出压缩文件为文件夹名.tar.gz。最后再使用 find 命令找到所有压缩文件(-name "*.tar.gz")并使用 -exec 参数调用 mv 命令将这些文件移动到指定的文件夹下
注意: 上面脚本中的/path/to/folders 和 /path/to/destination/folder 需要替换为自己需要查询压缩的文件夹和目标文件夹的绝对路径.
Linux 写一个脚本 查询所有六个月之前的文件并压缩 压缩完成后发送到新建的文件夹下
在 Linux 上,可以使用 `find` 命令查询所有六个月之前的文件,使用 `-mtime` 或 `-mmin` 参数指定时间。然后可以使用 `tar` 命令将找到的文件打包成压缩文件。
如果要将压缩文件发送到新建的文件夹下,可以使用 `mv` 命令移动压缩文件到新文件夹。
以下是一个示例脚本,它将查询所有六个月之前的文件,并将它们打包成一个名为 `old_files.tar.gz` 的压缩文件,最后移动该文件到新建的文件夹 `/new_folder` 下:
```bash
#!/bin/bash
find /path/to/search -type f -mtime +180 | tar -czvf old_files.tar.gz -T -
mv old_files.tar.gz /new_folder
```
请注意这个例子查询到文件是 6 个月前修改过的,如果您需要根据其它时间查询,可以更换 -mtime 的参数。