名前だけでforループでサブディレクトリをスキップするには?

名前だけでforループでサブディレクトリをスキップするには?

次のようにサブディレクトリとして構成されたディレクトリがあります。

a1
b1
c1
c2
c3
d1

指定された文字の最新のサブディレクトリでのみ実行されるループを実行しようとしています。つまりa1、、、、b1およびc3を繰り返しますが、合計はd1無視されます。これまでの努力は、サブディレクトリ名の数値を直接比較することにのみ集中していましたが、うまくいきませんでした。私は初めてbashに触れたので、これが私が見逃した簡単な修正であれば謝罪します。c1c2

ベストアンサー1

これはあなたの目標を達成したようです

#!/bin/bash
for DIR in {a..z}
do
 GOOD=$(find ${DIR}[0-9] -type d -print -prune 2>/dev/null | tail -1)
 if [[ "$GOOD" ]]; then
  echo $GOOD
 fi
done

使用例:

$ mkdir a1 b1 c1 c2 c3 d1
$ ./a.sh
a1
b1
c3
d1
$

おすすめ記事