x 일보다 오래된 로그 파일을 지정된 디렉토리에서 삭제하는 bash 스크립트를 빌드 중입니다. 아시다시피 "찾기"는 hadoop fs에서 사용할 수 없으므로 루비에서이 작업을 수행하는 깔끔한 방법을 발견했으며이를 bash에서 수행 할 수있는 방법이 있는지 궁금해하고있었습니다. 루비에서hadoop에서 x 일보다 오래된 파일을 삭제하십시오.
:
여기
#!/usr/bin/env ruby
require "date"
five_days_ago = Date.parse(Time.now.to_s) - 5
IO.popen("hadoop fs -lsr /tmp").each_line do |line|
permissions,replication,user,group,size,mod_date,mod_time,path = *line.split(/\s+/)
if (mod_date)
if Date.parse(mod_date.to_s) < five_days_ago
puts line
if permissions.split('')[0] == 'd'
puts "deleting #{path}"
`hadoop fs -rmr -skipTrash #{path}`
dirname = path
next
end
next if path.start_with? dirname
`hadoop fs -rm -skipTrash #{path}`
end
end
end