2012-10-30 2 views
0

다양한 크기의 파일이 많은 /home/user/ingest/ 디렉토리가 있습니다. 이 폴더 안의 모든 파일을 2 분마다 /home/user/ingest/inbox으로 이동해야합니다. /home/user/ingest/inbox으로 이동하기 위해 첫 번째 파일이 2 분 이상 걸릴 수 있습니다. 어떤 경우에는 두 번째 파일을 이동할 때 첫 번째 파일도 가져 가면 안됩니다. 그래서 나는 움직일 때 파일의 이름에 타임 스탬프를 추가하려고 생각했다. 쉘 스크립팅에서 이것을 수행 할 수 있습니까?Unix에서 파일의 이름에 프로세스의 타임 스탬프를 추가하는 방법

그리고 crontab을 사용하면 매 2 분마다 셸 스크립트의 실행을 예약하는 데 도움이 될 수 있음을 이해합니다. 나는 cron에 대한 기본적인 아이디어를 가지고 있지만, 필자의 특별한 요구 사항에 따라 파일이 2 분마다 사랑 받고 있는지 여부를 어떻게 확인할 수 있습니까?

답변

3

당신이 bash는 스크립트를 사용하여이 작업을 수행 할 수 있습니다

#!/bin/bash 

TIMESTAMP=$(date +%s) 

for f in /home/user/ingest/* 
do 
    if [ -f "$f" ]; then 
     name=$(basename "$f") 
     mv $f /home/user/ingest/inbox/${name}_${TIMESTAMP} 
    fi 
done 

${TIMESTAMP}은 시대 이후의 초 (1970년 1월)의 수이다. for 루프는 /home/user/ingest/ 디렉토리의 모든 항목을 반복하고 if 문은 파일이 일반 파일 (심볼 링크가 아닌 디렉토리가 아님)인지 확인한 다음 파일을 /home/user/ingest/inbox/으로 이동하고 끝에 타임 스탬프를 추가합니다 .

+0

도움 주셔서 대단히 감사합니다! 아름답게 일했습니다! – user1452759

관련 문제