我想删除超过n天的分区文件夹。下面的命令给出的文件夹正好是50天前的。我想要少于50天的所有文件夹的列表
hadoop fs -ls /data/publish/DMPD/VMCP/staging/tvmcpr_usr_prof/chgdt=`date --date '50 days ago' +\%Y-\%m-\%d`
7uhlpewt1#
这可以通过一个 bash 脚本
bash
today=`date +'%s'` hdfs dfs -ls /data/publish/DMPD/VMCP/staging/tvmcpr_usr_prof/ | grep "^d" | while read line ; do dir_date=$(echo ${line} | awk '{print $6}') difference=$(( ( ${today} - $(date -d ${dir_date} +%s) ) / ( 24*60*60 ) )) filePath=$(echo ${line} | awk '{print $8}') if [ ${difference} -lt 50 ]; then echo "${filepath}" fi done
mhd8tkvw2#
您可以尝试使用solr hdfsfindtool:
hadoop jar /opt/cloudera/parcels/CDH/lib/solr/contrib/mr/search-mr-job.jar org.apache.solr.hadoop.HdfsFindTool -find /data/publish/DMPD/VMCP/staging/tvmcpr_usr_prof -mtime +50 | xargs hdfs dfs -rm -r -skipTrash
2条答案
按热度按时间7uhlpewt1#
这可以通过一个
bash
脚本mhd8tkvw2#
您可以尝试使用solr hdfsfindtool: