开发一个shell程序 把hdfs上 /opt/gcy目录下 文件夹名称包含日期 超过7天的删除
时间: 2024-05-12 08:16:51 浏览: 9
你可以使用以下的shell脚本来实现这个要求:
```
#!/bin/bash
# 获取7天前的时间戳
DEL_TIME=$(date -d "7 days ago" +"%s")
# 遍历目录中的文件
for file in $(hdfs dfs -ls /opt/gcy | awk '{print $NF}')
do
# 获取文件的修改时间
FILE_TIME=$(hdfs dfs -stat "%Y" $file)
# 如果文件夹名称包含日期,并且修改时间超过7天,则删除该文件
if [[ $file =~ [0-9]{4}-[0-9]{2}-[0-9]{2} && $FILE_TIME -lt $DEL_TIME ]]
then
hdfs dfs -rm -r $file
fi
done
```
这个脚本会遍历/opt/gcy目录下所有的文件夹和文件,如果文件夹名称中包含日期,并且修改时间超过7天,就会删除该文件夹。可以将该脚本保存为一个文件,比如delete_old_files.sh,然后在命令行中执行:
```
bash delete_old_files.sh
```
即可实现删除超过7天的文件夹。
相关问题
写一个shell 删除在hdfs上 /opt/gcy目录下 文件夹名称包含日期 超过7天的 文件夹
你可以使用以下shell命令来实现上述操作:
```
hdfs dfs -ls /opt/gcy | grep "^d" | while read line ; do
dir_date=`echo $line | awk '{print $6}'`
difference=$(( ($(date -d "now" +%s) - $(date -d "$dir_date" +%s)) / (24*60*60) ))
if [ $difference -gt 7 ]; then
dir_name=`echo $line | awk '{print $8}'`
echo "Deleting directory ${dir_name}"
hdfs dfs -rm -r "${dir_name}"
fi
done
```
这个脚本将列出HDFS中`/opt/gcy`目录下的所有文件夹,并根据日期计算它们的年龄。如果某个文件夹的年龄超过了7天,那么该脚本就会删除它。请注意,这个脚本会递归地删除整个文件夹,所以请谨慎使用。
写一个shell 在hdfs上 /opt/gcy目录下 删除7天以前的文件夹
好的,以下是可以实现该功能的Shell脚本:
```
hdfs dfs -ls /opt/gcy | grep '^d' | while read f; do
dir_date=$(echo $f | awk '{print $6}')
difference=$(( ( $(date +%s) - $(date -d $dir_date +%s) ) / (24 * 60 * 60 ) ))
if [ $difference -gt 7 ]; then
dir_path=$(echo $f | awk '{print $8}')
hdfs dfs -rm -r $dir_path
echo "Deleted directory: $dir_path"
fi
done
```
这个脚本会先列出 `/opt/gcy` 目录下的所有子目录,然后针对每个子目录分别计算其创建日期到当前日期的时间差,若大于7天,则通过 `hdfs dfs -rm -r` 命令删除该目录。请注意,所有删除操作都是不可逆的,请在确认无误后再进行删除操作。