![获取 bash 脚本来删除它运行的每个输入文件](https://linux22.com/image/168232/%E8%8E%B7%E5%8F%96%20bash%20%E8%84%9A%E6%9C%AC%E6%9D%A5%E5%88%A0%E9%99%A4%E5%AE%83%E8%BF%90%E8%A1%8C%E7%9A%84%E6%AF%8F%E4%B8%AA%E8%BE%93%E5%85%A5%E6%96%87%E4%BB%B6.png)
从我之前提出的问题中得知,我正在使用一个运行 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