2012-10-29 7 views
0

을 감안할 때 로그 파일 :logrotate에와 쉘 스크립트

 
log_from_2012_08_14-11:57:21_To_2012_09_14-11:56:12.zip 
log_from_2012_10_14-11:57:21_To_2012_11_14-11:56:12.zip 

그리고이 같은 약 155,450 파일이 주어진, 어떻게이 (가) 단순 또는 효율적인 방법으로 다음을 수행 할 수

logrotate 또는 다른 도구를 사용하여 매월 폴더를 만들 수 있습니다 (예 : mkdir $ currentMont = october). 매달 10 월, 2012 년 모든 파일을 그 곳에 배치합니다.

+0

이 로그는 2 개월에 걸쳐 나타나며 시작 시간별로 정렬 되길 원하십니까? –

+0

hmmm tht는 나의 서버가 각 2 시간 동안 로그를 가지고있는 예입니다 :) – drd0sPy

답변

1

트릭을 수행 할 루프를 위해 중첩 된 bash 스크립트와 비슷합니다. 같은

뭔가 :

for year in $(seq -f "%02g" 0 20); do 
    for month in $(seq -f "%02g" 0 12); do 
     dest = "20${year}-${month}" 
     mkdir "$dest" 
     mv "log_from_${dest}*" "${dest}"; 
    done; 
done; 

은 분명히 당신은 당신의 요구에이를 조정할 필요가있다. 하나의 디렉토리에 너무 많은 파일이있는 경우 회선 제한으로 실행할 수 있습니다.이 경우 해당 문제를 방지하려면 find . | xargs mv을 사용해야합니다.

+0

그래도 도움이 될 것 같아서 고맙습니다. 글로브 한도가 거의 확실하게 나타납니다. ... 나는 ls의 정렬 된 능력 때문에 파일을보기 위해서 ls -f를해야만한다. for 루프를 상상해 보라. – drd0sPy