2017-03-25 5 views
0

forループに複数のディレクトリを入力したいとします。私はディレクトリの完全な名前を持っていません。その一部だけです。名前がサブストリングに一致するディレクトリを入力する

私はcd *IncompleteDirName*

これは、ループのMVEであるようにあなたは、端末上で書くと何のようなもの、何かをしたいと思います:IncompleteDirName年代には、ファイルIncompleteDirNamesから取得されます。

cont=1 
sum=1 
while read anotherFILE; do 

     IncompleteDirName=$(sed "${cont}q;d" IncompleteDirNames) 

     cd *"${IncompleteDirName}"* 
     # Do stuff 
     cd .. 
     cont=$((cont + sum)) 
done <anotherFILE 

これは機能していません。ワイルドカードが拡張されていないか、変数が正しく機能していないとわかりません。

*::それは私にこのエラーメッセージが投げている

そのようなファイルやディレクトリ

を私は、これは意図したとおりにアスタリスクが働いていないことを意味しているとします。ディレクトリには入っておらず、すべてのパターンに一致するディレクトリがあります。とにかく、ディレクトリは入力されていません。

Alicante Almeria Andalucia Avila

それは名前の列です:

これはIncompleteDirNamesファイルはどのように見えるかです。 これらは上記IncompleteDirName秒に対応するディレクトリ名です:このコードを試してみてください

aa4fas_Alicante_com mun_Almeria comunidadde_Andalucia ciuAvila

+2

「機能しない」とはどういう意味ですか?これは実際には実行されない例であるため、ここで何が起こっているのかを正確に理解することができません。部分文字列はファイル内にあり、それらの部分文字列はディレクトリ名の一部であり、 'FILE'にある部分文字列によって部分的にマッチしたディレクトリのそれぞれに「やる」ことをしたいのですか?部分文字列が複数のディレクトリに一致する場合はどうなりますか? 'code'と' p-ca'ファイルの内容は何ですか? – ghoti

+0

私は複数のディレクトリが一致していないと確信しています。私はコードを修正しました。 – D1X

+0

動作しないものを明確にする必要があります。ひとつは確かです。不完全な名前が多くのディレクトリに一致し、それぞれの内部で何かしたい場合は、そのためのループが必要です。また、ディレクトリが一致しない場合の準備をする必要があります。仮のコードでは "cd"コマンドが失敗しますが、 "Do stuff"部分は実行されません。 – Fred

答えて

0

-

cont=1 
sum=1 
while read FILE; do 

     IncompleteDirName=$(sed "${cont}q;d" FILE) 

     cd *"${IncompleteDirName}"* 
     # Do stuff 
     cd .. 
     cont=$((cont + sum)) 
done <IncompleteDirNames 
+0

いいえ、それは問題ではないですが、whileは別のファイルをループし、そのようにしなければなりません。 – D1X

+0

ループ/スクリプト中に実行しようとしているディレクトリに "FILE"のようなファイルがあるかどうかをチェックすることができますか? '*:No such file or directory'ファイル(あなたのコードでファイル名が "FILE"である) –

+0

はい、あります、私はちょうどそれをチェックしました。 – D1X

0

あなたは、次の操作を行うことができます

#!/bin/bash 

while read -r line; do 
    cd /absolute/path/to/*$line* 
    # do stuff 
done < filename 

これは、名前が部分的にfilenameの行と一致する各ディレクトリを入力し、「処理する」となります。

関連する問題