シンボリックリンクの後のすべてのディレクトリ名を取得します。

シンボリックリンクの後のすべてのディレクトリ名を取得します。

Symlink Mainを含むディレクトリのリストがあります。これで、シンボリックリンクの後ろにあるすべてのディレクトリ名をどのように抽出できますか?

前任者:

Main -> 2021-07-06

2021-07-15

2021-07-25

2021-07-31

2021-08-01

後で番号をどうやって知ることができますか?基本最後まで(2021-08-01)まで2021-07-15から2021-08-01までの日付を取得するにはどうすればよいですか?これらはすべて異なるディレクトリです。

操作:

  1. シンボリックリンク以降の日付を取得します。

  2. 前の手順で取得した日付を繰り返します。

  3. インポートされた各日付の論理実行

例:

2021年7月15日から2021年8月1日までのすべての日付に適用されます。

       Execute some code

ここに画像の説明を入力してください。

答え1

Mainシェルからシンボリックリンクでリンクされたディレクトリにリストされているディレクトリ名を印刷するには、zsh次の手順を実行します。

print -rC1 -- Main/*(ND/:t)

Mainまたは、これらのすべてのYYYY-MM-DDディレクトリとシンボリックリンクが同じディレクトリにあり、次を指すディレクトリの背後にあるディレクトリを(年代順、語彙順に等しく)リストする場合Main

zmodload zsh/stat || exit

stat -A min +link Main || exit

for date in ????-??-??(N/e['[[ $REPLY > $min ]]']); do
  some-logic with $date
done

シェルには組み込みまたはglob修飾子はbashありませんが、ksh演算子もあり、システムにコマンドがある場合は、次のことができます。stat[[ foo > bar ]]readlink

min=$(readlink -v Main) || exit
for date in ????-??-??; do
  [ -d "$date" ] || continue
  [ -L "$date" ] && continue
  [[ "$date" > "$min" ]] || continue

  some-logic with "$date"
done

関連情報