728x90 반응형 File8 Groovy : 수정된지 N일이 넘는 파일들 삭제하기 특정 디렉토리 밑에 있는 파일 중에서 일정시간이 지난 파일을 삭제하고자 할 때 필요한 스크립트이다. 파일 서버를 관리하다보면, 주기적으로 필요 없는 파일들을 삭제해야 하는데, Unix(Linux) 환경에서는 find, rm 등을 조합하여 사용할 수도 있다. 그런 것이 여의치 않고, 굳이 Groovy 를 이용하려고 할 때, 활용하면 좋겠다.final DAY_LIMIT = 2 // N일final TARGET_DIR = "./"println("[Deleted Files]\n")new File(TARGET_DIR).eachFileRecurse { file -> if( file.file ) { def lastModified = new Date(file.lastModified()) d.. 2012. 3. 9. Groovy : 파일 md5sum 구하기 Groovy에서 md5sum 을 구하려면, Java 의 MessageDigest 모듈을 이용해야 한다. 안타깝게도 file 에 대한 md5 checksum 을 구하는 부분은 구현되어 있지 않기 때문에 별도로 구현해야 한다. 다른 언어에서의 방법과 유사하므로 그리 어렵지는 않다. Java 의 모듈을 그대로 이용해야하기 때문에, 구현은 Java 의 그것과 거의 같다.import java.security.MessageDigest def md5sum(final file) { MessageDigest digest = MessageDigest.getInstance("MD5") file.withInputStream() { is -> byte[] buffer = new byte.. 2012. 3. 6. Groovy : 하위 디렉토리의 모든 파일 출력하기 Groovy에서 하위 디렉토리의 모든 파일을 출력하는 방법을 알아보자. 인터넷에서 검색하면 금방 나오는 내용이지만, 일단 적어둔다. new File("C:\\").eachFileRecurse { filename -> println "Filename: $filename"} 2012. 3. 5. (Ruby) 파일(디렉토리)이름에 특정 문자열이 포함된 목록 출력하기 Ruby에서 파일(디렉토리)이름에 특정 문자열이 포함된 목록 출력하기위해서 아래와 같이 하면 된다. Unix(Linux)/Cygwin 에서는 기본적인 도구만으로도 쉽게 할 수 있지만, 그런 환경에 안되는 곳에서는 유용하다. 아주 사소한 팁이지만, 이런 것이 여러가지가 모이면, 나중에 큰 도움이 될 것이다. ^^# -*- coding: cp949 -*-require 'find' $dirlist = ["C:\\"]$sub_string = "애니메이션" $dirlist.each() do |dirname| puts dirname if dirname.include?($sub_string) Find.find(dirname) do |file| next if file == nil next if n.. 2011. 10. 27. Python : 10MB 이상의 파일중에서 중복된 파일 찾기 PHP, Ruby 에 이어서, Python 에서도 중복파일 찾기를 만들어보았다. # -*- coding: cp949 -*- # 버전 3.2.2 이상 from operator import itemgetter from hashlib import md5 import os TARGET_DIR = "M:\\PATH\\TO\\특정디렉토리" LIMITED_SIZE = 10*(1024*1024) # 10MB def md5sum(filename, buf_size=4068): m = md5() with open(filename, 'rb') as f: data = f.read(buf_size) while data: m.update(data) data = f.read(buf_size) return m.hexdigest() d.. 2011. 7. 12. (Ruby) 10MB 이상의 파일중에서 중복된 파일 찾기 아래 코드에서 파일에 대한 MD5SUM 을 구하기 위해서 주석 처리한 부분을 대신 사용할 수 도 있다. 인터넷에서 찾아보면 이렇게 되어 있는 경우가 많은데, 이렇게 하면 메모리를 많이 잡아먹는 문제가 발생한다. 반드시 Digest::MD5.file().hexdigest 를 이용해야만 적은 메모리를 사용하면서 원활하게 동작되니 주의하기 바란다.# -*- coding: cp949 -*-require 'find'require 'digest/md5' file_list = Array.newFind.find("C:\\") do |path| if File.file?(path) and File.size(path) > 10_000_000 # digest = Digest::MD5.hexdigest(File.read.. 2011. 5. 17. 이전 1 2 다음 728x90 반응형