2017-09-10 55 views
0

/root/mp3/path包含以下文件。 我要移動的文件包含「在」信到其他文件夾shell腳本如果條件太多參數

2017-02-10-12-11-05-in.talaw 
    2017-02-10-12-11-05-out.talaw 
    2017-02-10-12-12-05-in.alaw 
    2017-02-10-12-12-05-out.alaw 


    $FILES=/root/mp3/* 
    for f in "$FILES" 
    do 
    ef=$(ls $f | awk -F"." '{print $1}' | awk -F "-" '{print $NF}') 
    #to check in for a file 
    if [ $ef = "in" ] 
    #if file contian "in" letter then move to other folder) 
    then 
    mv /FILES /sotrage 
    fi 
    done 

得到錯誤的參數太多,如果在[$ EF =「在」] 如果我試圖用,如果[「$ EF」 == 「在」]我沒有得到電流輸出

i am using if [ $ef = "in" ] to compare if file contains "in" 

那麼只有這樣做將有助於其他文件夾

+0

有沒有辦法將這些.talaw文件轉換爲mp3/wav?我希望將這些呼叫提供給語音到文本轉換器。 –

回答

0

你真正想要做的是mv -t /destination /root/mp3/*-in.*


您有問題,由於你存放在變量模式:

$FILES=/root/mp3/* 
for f in "$FILES"; do 

在這一點上,$f包含文字字符串"/root/mp3/*" - 圖案尚未擴大,因爲周圍有引號"$FILES"

T母雞,你這樣做

ef=$(ls $f | awk -F"." '{print $1}' | awk -F "-" '{print $NF}') 

$f是加引號的,所以外殼擴展模式和ls終於看到所有文件的清單。你通過awk幾行文字。 $ef將包含換行符。此時嘗試echo "$ef"

+0

謝謝刪除$之前文件我得到正確的輸出。在移動文件之前,我將與其他文件混合,因此我使用if –

0

不知道你的競爭要求移動文件conatians你的問題只涉及到,如果條件嘗試改變條件爲[ $ef == "in" ][[ $ef == "in" ]]因爲單個=意味着它將作爲分配操作員而不是條件。請嘗試一下,讓我知道這是否有助於你。

+0

我的要求是隻有包含「in」字母的文件名應該移動到其他文件夾試過這個[$ ef ==「in」],但它不能在驗證信 –