必須のzsh回答:
latest_directory=(parent/*(/om[1]))
括弧内の文字は、glob修飾子です。/
ディレクトリのみにom
一致し、年齢の昇順で一致をソートし[1]
、最初の(つまり最新の)一致のみを保持します。N
のサブディレクトリがない場合に空の配列を取得する場合(通常は1要素の配列を取得する場合)に追加しますparent
。
あるいは、parent
シェルのグロビング文字が含まれていないと仮定します。
latest_directory='parent/*(/om[1])'; latest_directory=$~latest_directory
zshはないが、最新のGNUツール(つまり、非組み込みLinuxまたはCygwin)がある場合は、を使用できますがfind
、面倒です。1つの方法を次に示します。
latest_directory_inode=$(find parent -mindepth 1 -maxdepth 1 -type d -printf '%Ts %i\n' | sort -n | sed -n '1 s/.* //p')
latest_directory=$(find parent -maxdepth 1 -inum "$latest_directory_inode")
にはls
、ディレクトリ名に改行または(一部のシステムでは)印刷できない文字が含まれていない限り機能する簡単なソリューションがあります。
latest_directory=$(ls -td parent/*/ | head -n1)
latest_directory=${latest_directory%/}
ls -ltr ./parent | grep '^d' | tail -1| awk '{print $NF}'