ディレクトリa1..a5、b1..b5、およびc1..c5があります。各ディレクトリ内には、 a1、b1、c1の 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* にアクセスできません: そのようなファイルまたはディレクトリはありません
なぜこれが起こるのか分かりますか?