bash : 가장 최근에 수정 된 하위 디렉토리로 cd


10

"가장 최근에 수정 된 하위 디렉토리로 변경"이라고 말하는 쉽고 간편한 방법이 있는지 궁금합니다. ls와 awk를 사용할 수는 있지만 더 좋은 방법이 있습니다.

cd $( ls -ltrd */ | tail -1 | awk '{ print $8 }' )

수백 개의 하위 디렉토리와 가장 최근에 변경된 디렉토리로 이동하려는 시간의 99 %가있는 "출력 파일"디렉토리에서 명령을 실행해야합니다. 디렉토리 이름이 무엇인지 미리 알 수 없습니다.


1
왜 안돼 cd $(ls -v1td */ | head -1)?
Pablo Castellazzi

좋은 점 ... 나는 ls 옵션에 익숙하지 않다 ...
twblamer

답변:


13

디렉토리에 인쇄 할 수없는 문자가 없다고 가정합니다.

cd  "$(\ls -1dt ./*/ | head -n 1)"

(디렉토리에 대한 심볼릭 링크도 고려합니다).

zsh로 전환하지 않아도되는 경우 :

cd ./*(/om[1])

또는 첫 번째 예에서와 같이 디렉토리에 심볼릭 링크를 포함 시키려면 다음을 수행하십시오.

cd ./*(-/om[1])

0

즐겨.

cdd(){ 
  # cd into the last directory modified/created in pwd
   ls -p | grep / | tail -1 | pbcopy; str=$(pbpaste); cd $str
}

디렉토리 이름을 클립 보드에 넣는 이유는 무엇입니까? 또한 디렉토리 이름에 공백이 있으면 어떻게됩니까? 요즘 꽤 자주 발생합니다.
roaima

클립 보드를 사용하면 원하는 경우 추가 작업을 쉽게 수행 할 수 있습니다.
jasonleonhard

정말로 원하는 경우 다른 필드를 비교적 쉽게 추가 할 수 있습니다. {print $ 9} 대신 원하는만큼 {print $ 9, $ 10, $ 11}을 사용할 수 있습니다.
jasonleonhard

공백을 설명하기 위해 답변을 수정했습니다.
jasonleonhard

여기에 대략적인 설명은 다음과 같습니다 explainshell.com/...
jasonleonhard

-1

이 짧은 버전의 명령을 사용해보십시오

cd $(ls -t | head -n 1)   

현재 디렉토리에서 가장 최근에 수정 된 파일이 디렉토리 유형 (또는 디렉토리에 대한 심볼릭 링크)이고 파일 이름에 공백이나 와일드 카드 또는 줄 바꿈이 포함되어 있지 않고-로 시작하지 않는 경우에만 작동하므로 개선되지 않습니다. 이미 답변을 수락했습니다.
Stéphane Chazelas
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.