首先,如果这个问题看起来很简单,请原谅我并放轻松;我第一次尝试发布关于另一个主题的问题时,几个月前我没有提供足够的信息。我很抱歉。
我正在尝试扫描传入的媒体文件夹以查找新的音频文件,并将它们转换为我喜欢的格式到另一个文件夹中,而不删除原始文件。
我已经编写了下面的脚本,虽然它似乎可以一次性使用,但我似乎无法让它根据源目录名称创建目标目录名称;而且我似乎无法弄清楚如何保持它循环,“扫描”,以便新媒体到达而不处理它已经处理的内容。
我希望这是有道理的...
#! /bin/bash
srcExt=$1
destExt=$2
srcDir=$3
destDir=$4
opts=$5
# Creating the directory name - not currently working
# dirName="$(basename "$srcDir")"
# mkdir "$destDir"/"$dirName"
for filename in "$srcDir"/*.flac; do
basePath=${filename%.*}
baseName=${basePath##*/}
ffmpeg -i "$filename" $opts "$destDir"/"$baseName"."$destExt"
done
for filename in "$srcDir"/*.mp3; do
basePath=${filename%.*}
baseName=${basePath##*/}
ffmpeg -i "$filename" $opts "$destDir"/"$baseName"."$destExt"
done
最佳答案
有不同的方法可以做到这一点,最简单的方法可能是查看文件的“修改日期”并查看它是否已更改,例如:
#! /bin/bash
srcExt=$1
destExt=$2
srcDir=$3
destDir=$4
opts=$5
# Creating the directory name - not currently working
# dirName="$(basename "$srcDir")"
# mkdir "$destDir"/"$dirName"
for filename in ` find "$srcDir" \( -name '*.mp3' -o -name '*.flac' \) -mmin -10`; do
basePath=${filename%.*}
baseName=${basePath##*/}
ffmpeg -i "$filename" $opts "$destDir"/"$baseName"."$destExt"
done
关于bash - 持续扫描目录并在新项目上执行脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65552421/