最后一步-为目录中的所有文件运行此脚本

时间:2019-07-11 00:49:57

标签: bash

通过5个小时的学习和来自聪明才智的人的大量帮助,我的脚本运行得很完美,但是我需要对其进行扩展。目前,我在第三行中输入单个文件的文件名作为变量,保存脚本并运行它。脚本处理没有问题。文件已上传到Google CLoud Storage,Firebase已写入,所有链接均有效。除了手动输入文件名之外,其他一切都很好。

我的问题是如何针对目录中找到的所有flac文件运行相同的脚本?

#!/bin/bash
cd /var/www/html/library/422980-2560-WIN
file="Date-2019-07-10__Time-16:36:50.flac"
echo $file | awk -F'-' '{print $2, $3, $4, $5}' | awk -F':' '{print $1, $2, $3, $4}' | awk -F'__' '{print $1, $2, $3}' | awk -F'.' '{print $1}' | awk -F'Time' '{print $$year=`awk -F' ' '{print $1}' awkresults.txt`
month=`awk -F' ' '{print $2}' awkresults.txt`
date=`awk -F' ' '{print $3}' awkresults.txt`
hour=`awk -F' ' '{print $4}' awkresults.txt`
minute=`awk -F' ' '{print $5}' awkresults.txt`
second=`awk -F' ' '{print $6}' awkresults.txt`

sudo gcloud ml speech recognize /var/www/html/library/422980-2560-WIN/$file --language-code='en-US' >STT.txt
STT=`grep -Po '"transcript": *\K"[^"]*"' STT.txt | cut -d '"' -f2`
sudo gsutil cp /var/www/html/library/422980-2560-WIN/$file gs://422980
sudo /usr/local/fuego --credentials /home/repeater/medialunaauth01-280236ff5e5f.json add 422980 '
        {
                "bucketObjecturl": "https://storage.googleapis.com/422980/'"$file"'",
                "fileDate":"'"$date"'",
                "fileMonth":"'"$month"'",
                "fileName": "filenametest33",
                "fileHour":"'"$hour"'",
                "fileMinute":"'"$minute"'",
                "fileSecond":"'"$second"'",
                "fileYear":"'"$year"'",
                "liveOnline": "0",
                "qCChecked": "0",
                "speechToText":"'"$STT"'",
                "transcribedData": ""
}'
sleep 1
rm $file

注意:我了解我应该使用jq正确创建无错误的json文件,接下来我将学习它-我保证。

1 个答案:

答案 0 :(得分:1)

更改脚本以从命令行参数获取文件名:

file=$1

然后循环遍历目录中的所有文件:

for file in $.flac
do
    /path/to/your/script "$file"
done

或者您可以将循环放入脚本中,并在运行脚本时使用通配符。

您的脚本:

#!/bin/bash
cd /var/www/html/library/422980-2560-WIN
for file in "$@"; do
    echo $file | awk -F'-' '{print $2, $3, $4, $5}' | awk -F':' '{print $1, $2, $3, $4}' | awk -F'__' '{print $1, $2, $3}' | awk -F'.' '{print $1}' | awk -F'Time' '{print $$year=`awk -F' ' '{print $1}' awkresults.txt`
    month=`awk -F' ' '{print $2}' awkresults.txt`
    date=`awk -F' ' '{print $3}' awkresults.txt`
    hour=`awk -F' ' '{print $4}' awkresults.txt`
    minute=`awk -F' ' '{print $5}' awkresults.txt`
    second=`awk -F' ' '{print $6}' awkresults.txt`

    sudo gcloud ml speech recognize /var/www/html/library/422980-2560-WIN/$file --language-code='en-US' >STT.txt
    STT=`grep -Po '"transcript": *\K"[^"]*"' STT.txt | cut -d '"' -f2`
    sudo gsutil cp /var/www/html/library/422980-2560-WIN/$file gs://422980
    sudo /usr/local/fuego --credentials /home/repeater/medialunaauth01-280236ff5e5f.json add 422980 '
            {
                    "bucketObjecturl": "https://storage.googleapis.com/422980/'"$file"'",
                    "fileDate":"'"$date"'",
                    "fileMonth":"'"$month"'",
                    "fileName": "filenametest33",
                    "fileHour":"'"$hour"'",
                    "fileMinute":"'"$minute"'",
                    "fileSecond":"'"$second"'",
                    "fileYear":"'"$year"'",
                    "liveOnline": "0",
                    "qCChecked": "0",
                    "speechToText":"'"$STT"'",
                    "transcribedData": ""
    }'
    sleep 1
    rm $file
done

然后以以下方式运行脚本:

/path/to/your/script *.flac