2017-09-10 5 views
0

/root/mp3/pathに以下のファイルが含まれています。私は、ファイルを移動したい は、if [$ EF = "中"] iの場合は、[ "$のEF" をしようとした場合==他のフォルダ条件が多すぎる場合はシェルスクリプト

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 

でエラーあまりにも多くの引数を取得する "の" 文字が含まれています「中」]私はあなたの質問が唯一の条件が変化しようとした場合に関係しているようにのみ、それはあなたの競争の要件について

+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を移動する必要があり、現在の出力

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

を取得しておりません条件は[ $ef == "in" ] OR [[ $ef == "in" ]] single =は、条件としてではなく代入演算子として機能することを意味するためです。親切にそれを試してみて、これがあなたに役立つかどうか私に知らせてください。

+0

私の要件は、 "in"文字を含むファイル名は他のフォルダに移動する必要があります。この[$ ef == "in"]を試しましたが、正しいファイルを出力する前に$を削除した後に –

関連する問題