2009-06-30 4 views
0

나는 사용자 정의 보고서 디렉토리에서보고, 볼 데이터 파일과 함께 작업 폴더에 복사하고, 보고서를 실행하고, 새로 생성 된 파일을 압축하여 다른 서버에 업로드하는 스크립트를 작성하고 있습니다. .새 파일 만 압축하여 Bash 스크립트에서 보고서를 실행하는 방법은 무엇입니까?

내가 겪고있는 문제는 새로 생성 된 파일이 무엇을 호출 할 것인지 (파일 확장명이 아닐지) 모르겠다는 것입니다. 나는 지퍼로 잠그거나 새로운 파일이 무엇인지 알아내는 방법이 있는지 궁금해했다. (보고서를 실행하기 전과 비교하여)

나는 타임 스탬프를보고 최신 파일을 압축하여 어딘가에 옮길 것입니다.하지만 실행되는 보고서는 여러 시간에 여러 파일을 만들 수 있습니다 (예 : 전화 보고서 파일, 데이터, 데이터, 보고서 파일).

내가 어떻게이 작업을 수행 할 수 있는지에 대한 아이디어가 있습니까?

+0

당신은 얼마나 많은 파일이있을 것 아십니까? – Tynan

+0

Nope. 나는 출력 될 파일에 대해서는 아무것도 모른다. (이름, 크기, 파일 수 등) –

답변

2

비슷한 생각 :

touch report_start 
./run_report 
find $working_dir -type f -newer report_start | tar czf $archive 
rm report_start 
+0

찾기는 도구의 미친 스위스 육군 동물입니다. 새로운 매개 변수에 대해 전혀 몰랐습니다. 감사! – seth

+0

와우, 나는 발견에 대해 결코 알지 못했다. 고마워, 정말 고마워. :) –

+0

흠,이게 효과가있을 거라 생각 했어. 어떤 이유로 인해 만들어진 파일보다 오래된 파일이 표시되지 않습니다. 잠깐이라도 잠깐이라도 타임 스탬프가 같아 보이지만 작동하지 않는다면 잠자기 카운터를 거기에 두었습니다. 지금은 모든 파일을 만져서 이전 날짜로 다시 돌아가서 작동하는지 확인 하겠지만이 문제를 해결할 수 있는지 여부는 알 수 없습니다. –

1

당신이 좋아하는 뭔가를 할 수 있어야한다 : 그럼 그들은 당신이 보고서를 실행하기 전에 사용자가 만든 파일보다 최신 인 경우보고, 디렉토리에있는 모든 파일을 통해 루프 및

touch report_start 
./run_report 
for i in `ls -Rt`; do 
    echo $i | grep report_start 
    if [ $? -eq 0 ]; then 
     break  
    fi 
    cp $i reports 
done 
rm reports/report_start 
tar xvzf reports.tar.gz reports 
rm report_start 

은 타르볼을 만든다 결과 중. 타이난의와

+0

ls를 구문 분석하지 마십시오 : http://mywiki.wooledge.org/ParsingLs - "for i in *"할 수 있습니다. 재귀가 필요하면 find를 사용하십시오. rm reports/report_start는 -nt 자체가 아니기 때문에 rm reports가 필요하지 않으며 복사되지 않습니다. –

+0

그래, 깜빡 했어. find와 함께 - newer - 시간을 기준으로 정렬하는 유일한 방법은 -t와 같을 것이라고 생각했다. – Tynan

관련 문제