ディレクトリにパターンがあるいくつかのファイルを見つけようとします。再帰ではなく最初のレベルだけをスキャンしたいです。
私のスクリプト:
for i in $(ls $INCOMINGDIR/*$BUSSINESSDATE*)
do
echo $i;
done
上記のコマンドは再帰的に検索します。最初のレベルのディレクトリのみを検索するにはどうすればよいですか?
答え1
解析されないls
。返品ALL_CAPS_VARSを使用しないでください。
for i in "$incoming_dir"/*"$business_date"*; do
インタラクティブにサブディレクトリに降りるのを防ぐオプションがls
あります。-d
ls -d $INCOMINGDIR/*$BUSSINESSDATE*
答え2
このコマンドが再帰的である理由はありません。ただし、$INCOMINGDIR/*$BUSSINESSDATE*
ディレクトリが一致すると、ディレクトリ自体の代わりにそのディレクトリの内容が表示されます。しかし、このレベルを超えると、もう再帰はありません。
この効果を回避するには、次のコマンドを使用します。
ls -d "$INCOMINGDIR/"*"$BUSSINESSDATE"*
for ... in
出力のあるコマンドはls
危険です。
全体的にfind
良い解決策のようです。
for i in "$INCOMINGDIR/"*"$BUSSINESSDATE"*