2010-11-20 7 views
3

Comment puis-je joindre les résultats de 2 ls? - J'en ai besoin car les fichiers sont dans deux répertoires différents et j'ai besoin de les trier de différentes façons.Bash join ls sortie

Quoi qu'il en soit pour la sortie j'ai besoin d'une liste normale avec les deux résultats.

Répondre

2
(ls <first dir>; ls <second dir>) | sort ... 
1

Cela devrait le faire:

{ ls folder1 && ls folder2; } 

obtenu ceci à partir de:

Essayez cet exemple:

{ ls /etc/fonts && ls /etc/init; }|while read i; do echo $i; done 

(espérons que vous avez ces dossiers - remplacer si vous ne le faites pas).

+0

Pourquoi '' && et non ',' comme séparateur de commande? – Benoit

+1

Aucune raison, juste une habitude de ne pas exécuter la deuxième commande si le premier échoue. –

+0

@Benoit: C'est une très très bonne habitude; Bien que cela n'a pas beaucoup d'importance dans ce cas, il est tout à fait possible qu'une commande ultérieure fasse des choses inattendues très étranges après l'échec d'une première commande. – Cascabel

4

Pas besoin d'exécuter ls deux fois, il suffit de mettre plusieurs spécifications de fichier comme arguments.

ls /path/to/first_file_spec* /different_path/to/second_file_spec* 
+0

Que serais-tu si tu devais utiliser différents commutateurs pour chaque 'ls'? – Thevs

0

Peut-être find est plus utile ici à cause de ce « répertoire: » format ls utilise quand il a donné plus d'un répertoire comme argument.

find /etc/dpkg/ /etc/apt -mindepth 1 -maxdepth 1 | sort 

Vous pouvez personnaliser la sortie si votre découverte prend en charge printf, par exemple

find /etc/dpkg/ /etc/apt -mindepth 1 -maxdepth 1 -printf "%f\n" | sort