Question Bash: comment entrer dans un sous-répertoire qui a été le plus récemment modifié?


Je sais que je peux trouver un répertoire récemment modifié par ls -ltr, mais le dernier élément modifié pourrait être un fichier et non un répertoire. Deuxièmement, je dois encore taper le nom du répertoire. Mon nom de répertoire est comme un code de hachage, ce qui n'est pas vraiment lisible et il est très pénible de taper à chaque fois.

Un simple doublure pour le faire?


4
2018-03-29 13:55


origine




Réponses:


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

Enregistrez ceci en tant qu'alias dans ~/.bashrc, par exemple.

alias lcd='cd -- "$(ls -dt -- */ | head -1)"'

et maintenant lcd dans n'importe quel répertoire changera pour le dernier répertoire modifié dans le répertoire en cours.


7
2018-03-29 14:08



Gardez à l'esprit que l'horodatage ls vérifie ici ne se répète pas - c'est-à-dire qu'il ne trouve pas le dernier fichier modifié dans l'arborescence. Il ne fait que mesurer direct modifications à ce répertoire. - Daenyth
Cela ne fonctionne pas pour moi. Je reçois l'erreur -bash: cd: mydir/: No such file or directory où mydir est le dernier répertoire modifié. Il semble trouver le bon répertoire mais quelque chose provoque cd échouer. Des idées? - Patrick Marchwiak


Ajout de cette fonction à mon ~/.bashrc travaille pour moi

function lcd(){
cd $(ls -v1td --color=never */ | head -1)
}

Si j'essaie de le définir en tant qu'alias, l'expression est évaluée une fois au démarrage du shell et essaie toujours de créer le même sous-répertoire dans mon répertoire personnel. Sans le --color=never déclaration, je reçois l'erreur -bash: cd: mydir/: No such file or directory mentionné dans un autre commentaire.


2
2017-09-11 08:33