0

ディレクトリa1..a5b1..b5、およびc1..c5があります。各ディレクトリ内には、 a1b1c1の 2 つのファイルがあります。

do mkdir /tmp/{a,b}$d; touch /tmp/{a,b,c}$d/{a,b,c}1; done;

「a」で始まるディレクトリ内の「a」または「b」で始まるすべてのファイルを取得したい。私はそれを行うことができます:

DIRS=`ls -1 -d /tmp/{a,b}*/a*`
echo ${DIRS}

そして取得します:

/tmp/a1/a1 /tmp/a2/a1 /tmp/a3/a1 /tmp/a4/a1 /tmp/a5/a1 /tmp/b1/a1 /tmp/b2/a1 /tmp/b3/a1 /tmp /b4/a1 /tmp/b5/a1

ここで、DATA という変数を使用してディレクトリを保存し、後でファイルを取得します。

DATA="/tmp/{a,b}*"
echo ${DATA}
DIRS=`ls -1 -d ${DATA}/a*`
echo ${DIRS}

出力では、DATA の内容は OK ( /tmp/{a,b}* ) ですが、次のエラーが表示されます。

ls: /tmp/{a,b}*/a* にアクセスできません: そのようなファイルまたはディレクトリはありません

なぜこれが起こるのか分かりますか?

4

1 に答える 1

1

問題は解決しましたが、以前の試みが失敗した理由についての参照が見つかりません。

DATA="/tmp/{a,b}*"
echo ${DATA}
DIRS=`eval "ls -1 -d ${DATA}/a*"`
echo ${DIRS}

出力:

/tmp/a1/a1 /tmp/a2/a1 /tmp/a3/a1 /tmp/a4/a1 /tmp/a5/a1 /tmp/b1/a1 /tmp/b2/a1 /tmp/b3/a1 /tmp /b4/a1 /tmp/b5/a1

于 2016-07-27T23:19:24.340 に答える