获取 bash 脚本来删除它运行的每个输入文件

获取 bash 脚本来删除它运行的每个输入文件

从我之前提出的问题中得知,我正在使用一个运行 MP4Box 的脚本,使用 /mnt/usb/Convert/ 中的所有 .h264 文件作为输入,并将每个 .mp4 输出文件放入 /mnt/usb/Converted/ 中。这是该脚本:

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

这个脚本运行完美,只是我忽略了一个事实,即我还需要它能够删除它运行的每个 .h264 文件,否则当我 crontab 脚本时,它会不断重复相同的文件;明显地。

有人对在脚本运行完每个 .h264 文件后附加删除每个 .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

相关内容