可以使用以下Shell脚本实现一周清理一次指定路径下的指定类型文件:
```bash
#!/bin/bash
# 指定要清理的文件类型和目录路径
file_type=".log"
dir_path="/path/to/directory"
# 获取当前时间和一周前的时间
current_time=$(date +%s)
one_week_ago=$(date -d "1 week ago" +%s)
# 遍历目录下的所有文件,找到需要清理的文件并删除
for file in $dir_path/*$file_type; do
# 获取文件的修改时间
modified_time=$(stat -c %Y "$file")
# 判断文件是否需要清理
if [ $modified_time -lt $one_week_ago ]; then
rm "$file"
echo "Deleted file: $file"
fi
done
```
在脚本中,首先指定了要清理的文件类型和目录路径。然后使用`date`命令获取当前时间和一周前的时间,并遍历目录下的所有文件。对于每个文件,使用`stat`命令获取其修改时间,并判断是否需要清理。如果需要清理,则使用`rm`命令删除该文件,并输出删除的文件名。
将以上代码保存为一个Shell脚本文件(例如`clean_files.sh`),然后使用`crontab`命令将其添加到定时任务中,以实现每周自动清理指定路径下的指定类型文件。例如,可以使用以下命令将脚本添加到每周的周日凌晨3点执行:
```
0 3 * * 0 /bin/bash /path/to/clean_files.sh
```
其中,`0 3 * * 0`表示每周的周日凌晨3点执行,`/bin/bash /path/to/clean_files.sh`表示要执行的命令。