以下のようにフォルダ構造を作成しました。
mkdir -p test/f{1..4}/inside
走っている間にls -l test/*/
私は得た。
test/f1/:
total 0
drwxr-xr-x 2 s ff 68 Jun 21 18:37 inside
test/f2/:
total 0
drwxr-xr-x 2 s ff 68 Jun 21 18:37 inside
test/f3/:
total 0
drwxr-xr-x 2 s ff 68 Jun 21 18:37 inside
test/f4/:
total 0
drwxr-xr-x 2 s ff 68 Jun 21 18:37 inside
test/f1/:
追加のロジックを実行するためにループで使用できるように、変数から拡張パス(たとえば)をどのように取得できますか?
ベストアンサー1
「複数の項目」を含む変数を繰り返したくありません(変数には単一の項目のみを含めることができます)。特に配列をサポートするbashまたは他のシェルを使用する場合。
次のように、これらのディレクトリを使用して配列を設定できます。
array=( test/*/ )
その後、これを繰り返します。
$ for item in "${array[@]}"; do printf '\n%s\n' "Current directory: $item"; ls -l "$item"; done
Current directory: test/f1/
total 0
drwxr-xr-x 2 jessebutryn staff 64 Jun 21 07:20 inside
Current directory: test/f2/
total 0
drwxr-xr-x 2 jessebutryn staff 64 Jun 21 07:20 inside
Current directory: test/f3/
total 0
drwxr-xr-x 2 jessebutryn staff 64 Jun 21 07:20 inside
Current directory: test/f4/
total 0
drwxr-xr-x 2 jessebutryn staff 64 Jun 21 07:20 inside
ただし、次のように直接繰り返すこともできます。
for item in test/*/; do
#something with "$item"
done
注:私は常に相対パスではなくフルパスを使用することをお勧めします。
for item in /path/to/test/*/; do
#something with "$item"
done
これはワイルドカードを使用するときに特に安全です。