bash - 持续扫描目录并在新项目上执行脚本

标签 bash ubuntu ffmpeg monitor

首先,如果这个问题看起来很简单,请原谅我并放轻松;我第一次尝试发布关于另一个主题的问题时,几个月前我没有提供足够的信息。我很抱歉。
我正在尝试扫描传入的媒体文件夹以查找新的音频文件,并将它们转换为我喜欢的格式到另一个文件夹中,而不删除原始文件。
我已经编写了下面的脚本,虽然它似乎可以一次性使用,但我似乎无法让它根据源目录名称创建目标目录名称;而且我似乎无法弄清楚如何保持它循环,“扫描”,以便新媒体到达而不处理它已经处理的内容。
我希望这是有道理的...

#! /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/

相关文章:

audio - 如何在一个命令中使用 FFMPEG 修剪静音和连接两个音频文件?

bash - 如何在 makefile shell 命令中使用管道?

python - paramiko ls 有几个文件输出被截断

bash - 进程替换为 grep 缺少预期输出

python - Ubuntu服务器上的scrapy

ffmpeg - android 将 rtsp 转换为 MP4 ffmpeg

BASH 脚本 : when to include the back slash symbol

linux - plone.app.caching 和设置 Varnish 以清除缓存

ubuntu - 我在 Ubuntu 服务器上使用带有 certbot 的 Nginx 设置 https 失败并出现 ERR_ADDRESS_UNREACHABLE

拆分音频后级联音频中的 FFmpeg 间隙