실행되는 모든 입력 파일을 삭제하는 bash 스크립트를 가져옵니다.

실행되는 모든 입력 파일을 삭제하는 bash 스크립트를 가져옵니다.

이전 질문에서 나는 /mnt/usb/Convert/의 모든 .h264 파일을 입력으로 사용하고 각 .mp4 출력 파일을 /mnt/usb /Converted/에 넣는 MP4Box를 실행하는 스크립트를 사용하고 있습니다. 스크립트는 다음과 같습니다.

for f in /mnt/usb/Convert/*.h264; do
  n=${f/Convert/Converted}
  MP4Box -add "$f" "${n%.*}.mp4"
done

이 스크립트는 실행되는 모든 .h264 파일을 삭제할 수 있어야 한다는 사실을 간과했다는 점을 제외하면 완벽하게 실행됩니다. 그렇지 않으면 스크립트를 crontab할 때 동일한 파일이 계속 반복됩니다.

스크립트 실행이 완료된 후 각 .h264 파일을 추가로 삭제하는 방법에 대한 간단한 제안이 있는 사람이 있습니까? 나는 다양한 형태의 파이프와 "&&"를 시도했지만 운이 없었습니다.

감사합니다!

답변1

파일을 삭제하는 명령은 바로 입니다 rm "$f". 먼저 변환이 성공적으로 이루어졌는지 확인하려면 다음을 수행하십시오.

for f in /mnt/usb/Convert/*.h264; do
    n=${f/Convert/Converted}
    if MP4Box -add "$f" "${n%.*}.mp4"; then
        rm "$f"
    else
        printf '%s\n' "Failed to convert $f" >&2
    fi
done

관련 정보