Mon dossier parent
a le contenu suivant:
A.Folder B.Folder C.File
Il contient à la fois des dossiers et des fichiers. B.Folder
est plus récent. Maintenant, je veux juste obtenir B.Folder
, comment pourrais-je y parvenir? J'ai essayé ça,
ls -ltr ./parent | grep '^d' | tail -1
mais ça me donne drwxrwxr-x 2 user user 4096 Jun 13 10:53 B.Folder
, mais j'ai juste besoin du nom B.Folder
.
shell
files
ls
timestamps
Daniel
la source
la source
ls -ltr ./parent | grep '^d' | tail -1| awk '{print $NF}'
Réponses:
Essaye ça:
-t
les options font lels
tri par heure de modification, la plus récente en premier.Si vous souhaitez supprimer
/
:la source
/
?ls -td -- ./parent | head -n 1
ne me donne pas les résultats corrects, dois-je utiliser un sous-shell comme àcd ./parent
chaque fois et exécuter cette commande? Toute solution?La différence avec la solution de Herson est la barre oblique après
*
, qui fait que le shell ignore tous les fichiers non-dir. Différence avec Gnouc , cela fonctionnera si vous êtes dans un autre dossier.Cut a besoin de connaître le nombre de répertoires parents (2) afin de supprimer les «/» de fin. Si vous n'en avez pas, utilisez
la source
Réponse zsh obligatoire:
Les caractères entre parenthèses sont des qualificatifs globaux :
/
pour correspondre uniquement aux répertoires,om
pour trier les correspondances en augmentant l'âge et[1]
pour ne conserver que la première (c'est-à-dire la plus récente) correspondance. AjoutezN
si vous voulez obtenir un tableau vide (normalement vous obtenez un tableau à 1 élément) s'il n'y a pas de sous-répertoire deparent
.Alternativement, en supposant qu'il
parent
ne contienne aucun caractère de remplacement de shell:Si vous n'avez pas zsh mais que vous avez des outils GNU récents (c'est-à-dire Linux non intégré ou Cygwin), vous pouvez l'utiliser
find
, mais c'est lourd. Voici une façon:Il existe une solution simple avec
ls
, qui fonctionne tant qu'aucun nom de répertoire ne contient de nouvelles lignes ou (sur certains systèmes) des caractères non imprimables:la source
Tu peux faire:
la source
La commande suivante fera le travail même en cas de nom de répertoire contenant de l'espace:
L'explication mise à jour du contenu des backticks est la suivante:
.
- le répertoire courant (vous voudrez peut-être spécifier un chemin absolu ici)-mindepth/-maxdepth
- restreindre la commande find uniquement aux enfants immédiats du répertoire courant-type d
- uniquement les répertoires-exec stat ..
- affiche l'heure modifiée et le nom du répertoire de find séparés par un onglet (et non un espace)sort -n -r |head -1 | cut -f2
- date ordonne le répertoire et affiche le nom complet du dernier modifié (même s'il contient de l'espace comme onglet de délimitation par défaut)la source