再帰なしでlsする方法

再帰なしでlsする方法

ディレクトリにパターンがあるいくつかのファイルを見つけようとします。再帰ではなく最初のレベルだけをスキャンしたいです。

私のスクリプト:

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"*

関連情報