의무 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
있지만 번거 롭습니다. 한 가지 방법이 있습니다.
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}'