bash: cd para o diretório filho modificado mais recentemente

5

Imaginando se há uma maneira fácil e / ou portátil de dizer "alterar para o diretório secundário modificado mais recentemente". Eu posso usar ls e awk, mas provavelmente há uma maneira melhor.

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

Eu tenho que executar um comando em um diretório de "arquivos de saída" com centenas de subdiretórios e 99% do tempo que eu quero ir para o diretório alterado mais recentemente. Não sei quais serão os nomes dos diretórios com antecedência.

    
por twblamer 13.07.2011 / 22:40

3 respostas

8

Assumindo que seus diretórios não contenham caracteres não imprimíveis:

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

(observe que ele também considerará links simbólicos para diretórios).

Se você não se importa de mudar para o zsh:

cd ./*(/om[1])

Ou incluir links simbólicos em diretórios, como no primeiro exemplo:

cd ./*(-/om[1])
    
por 14.07.2011 / 01:23
0

Aproveite.

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

Experimente este comando de versão resumida

cd $(ls -t | head -n 1)   
    
por 09.02.2018 / 16:26