web-dev-qa-db-ja.com

再帰せずにlsする方法

ディレクトリ内のパターンを持ついくつかのファイルをlsしようとしています。再帰的ではなく、最初のレベルのみをスキャンしたい。

私のスクリプト:

for i in $(ls $INCOMINGDIR/*$BUSSINESSDATE*)
do
  echo $i;
done

上記のコマンドは再帰的にスキャンします。最初のレベルのディレクトリをスキャンするだけにするにはどうすればよいですか?

20
Sas

解析しないls 。また ALL_CAPS_VARSは使用しないでください

for i in "$incoming_dir"/*"$business_date"*; do

対話的に、lsには-dサブディレクトリへの下降を防ぐオプション:

ls -d $INCOMINGDIR/*$BUSSINESSDATE*
42
glenn jackman

このコマンドを再帰的にする必要がある理由はありません。しかし$INCOMINGDIR/*$BUSSINESSDATE*はディレクトリと一致し、ディレクトリ自体ではなく、このディレクトリのコンテンツが表示されます。しかし、このレベルを超える再帰はありません。

このコマンドを使用して、その影響を回避します。

ls -d "$INCOMINGDIR/"*"$BUSSINESSDATE"*

for ... inコマンドでlsを出力するのは危険です。

一般にfindはより良い解決策のようです

for i in "$INCOMINGDIR/"*"$BUSSINESSDATE"*
8
Hauke Laging