Make ls command sort by type of file (eg répertoires et extension de fichier)

15

Comment puis-je faire un lstri par type de fichier (par exemple, les répertoires d'abord, puis par extension de fichier)? Les réponses suggérées dans (Super utilisateur) Faire trier ls par type de fichier entraînent des erreurs d'options inconnues de ls.

Trousse
la source
2
Correction mineure concernant votre titre: ls n'est pas une commande bash; c'est un exécutable autonome situé à /bin/ls.
bneely

Réponses:

21

Comme vous l'avez découvert, la version Darwin de la lscommande ne prend pas en charge l' -X | --sort=extensionoption. Cette option est unique à la version GNU de ls.

Vous pouvez obtenir la version GNU de lsvotre système. La façon la plus simple de le faire est d'utiliser le gestionnaire de paquets Homebrew et le système de portage. Avec Homebrew installé, faites:

brew install coreutils

pour ajouter le package GNU Core Utilities à votre système. Tous les utilitaires seront préfixés gpour ne pas entrer en collision avec les utilitaires Darwin par défaut fournis avec OS X.

Une fois les utilitaires GNU Core installés, vous pouvez désormais:

gls -X

Et vous verrez la sortie triée comme vous le souhaitez.

Si vous souhaitez utiliser les GNU Core Utils au lieu des utilitaires fournis avec OS X, vous pouvez mettre la ligne suivante dans votre ~/.bashrcfichier:

source /usr/local/Cellar/coreutils/8.14/aliases

Et vous n'aurez plus besoin d'utiliser le gpréfixe sur les commandes. Je dirai que ce n'est pas une chose entièrement sûre à faire, car certains des utilitaires GNU diffèrent des outils bash intégrés et de Darwin par leur comportement, suffisamment pour qu'ils puissent gâcher d'autres choses dans votre session shell. Faites donc cela avec prudence.

Ian C.
la source
1

Basé sur une réponse dans l' article Super User lié :

ls -l |sort -d -k 1.1,1.1r -k 9 | cut -c 50-

Si vous voulez voir la sortie entière de ls -l, laissez simplement la cutpartie.

nohillside
la source