这是一个小问题,但有点烦人。我看了又看,但我不太明白为什么会发生这种情况或如何阻止它。我有数千个视频文件,出于多种原因,我正在慢慢地将它们从 MPEG II 格式转换为 MP4 容器中的 h.264。每个.mpg文件都有一个与之关联的.txt文件和.jpg文件,这些文件需要从“xxxxxxxxxxxxxxx.mpg.txt和xxxxxxxxxxxxxxx.mpg.jpg更改为xxxxxxxxxxxxxx.mp4.txt和xxxxxxxxxxxxxx.mp4.jpg”分别,然后需要删除旧的 .mpg 文件。我使用以下名为 mpgscan.sh 的脚本来执行此操作:
#! /bin/bash
suffix=".mpg"
mpegname="$@"
filename=${mpegname%"$suffix"}
mp4name="$filename"".mp4"
if [ -s "$mp4name" ]
then
if lsof "$mp4name" > /dev/null || lsof "$mpegname" > /dev/null
then
echo "$filename in use"
else
if [[ -f "$mpegname"".txt" ]]
then
rename -f 's/\.mpg.txt$/.mp4.txt/' "$mpegname"".txt"
fi
if [[ -f "$mpegname"".jpg" ]]
then
rename -f 's/\.mpg.jpg$/.mp4.jpg/' "$mpegname"".jpg"
fi
echo "$filename removed"
rm "$mpegname"
fi
fi
Run Code Online (Sandbox Code Playgroud)
文件的转换是在后台进行的,因此每隔一段时间我就会通过输入以下命令来批量更新关联的文件:
find /RAID/Recordings -name "*.mpg" -exec mpegscan.sh {} \;
Run Code Online (Sandbox Code Playgroud)
它工作得很好,但没有得到像这样的预期输出:
/RAID/Recordings/Movies/K/K-9 (Recorded …
Run Code Online (Sandbox Code Playgroud)