Lister le contenu de plusieurs répertoires

Fermé
Ka-El Messages postés 260 Date d'inscription lundi 28 novembre 2011 Statut Membre Dernière intervention 7 août 2020 - 25 janv. 2017 à 14:51
 Utilisateur anonyme - 26 janv. 2017 à 16:45
Bonjour,
Je cherche une commande unix qui va me permettre de lister uniquement les noms de fichier qui se trouvent dans les répertoires suivants:
/toto/new
/toto/new/tmp

Mon problème, c'est que la commande liste ne doit afficher que les fichiers dont le nom commence par Z* et dont le nombre de caractères ne dépassent pas "8"
Et pour finir, je dois éviter que mon listage affiche les arborescences dans lesquelles il effectue la recherche.
Au final, ma commande doit me donner un résultat de ce type en allant chercher dans les deux arborescences:
Zdghj5lm
Zn4567OP
Z2345678
Zhkm5790
etc...

Merci d'avance pour votre aide !
Ka-El

3 réponses

Utilisateur anonyme
25 janv. 2017 à 15:16
salut,

ça se fait "facilement" avec la commande
find
.

fais quelques essais, et dis-nous où tu coinces.
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
25 janv. 2017 à 17:06
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
26 janv. 2017 à 08:28
hello
$ find /toto/new -name "Z*" | awk -F / 'length($NF)<=8 {print $NF}'
# ou
$ find /toto/new -regextype posix-extended -regex ".*/Z.{1,8}" -printf "%f\n"
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
26 janv. 2017 à 12:14
correction
find /toto/new -regextype posix-extended -regex ".*/Z.{1,7}" -printf "%f\n"
0
Ka-El Messages postés 260 Date d'inscription lundi 28 novembre 2011 Statut Membre Dernière intervention 7 août 2020 > dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024
26 janv. 2017 à 14:45
Salut Dubcek,
Merci pour ton aide précieuse.
Effectivement tes deux exemples fonctionnent très bien, c'est nickel !

En revanche, penses-tu qu'il soit possible de procéder au même listage en utilisant la commande "ls" + options ?
Sachant que je peux m'autoriser ce type d'affichage :
-rw-r----- 1 user groupe 0 janv. 26 13:48 /toto/new/tmp/Zdghj5lm
-rw-r----- 1 user groupe 0 janv. 26 13:48 /toto/new/tmp/Zn4567OP
-rw-r----- 1 user groupe 0 janv. 26 13:48 /toto/new/Z2345678
-rw-r----- 1 user groupe 0 janv. 26 13:48 /toto/new/tmp/Zhkm5790
-rw-r----- 1 user groupe 0 janv. 26 13:48 /toto/new/Z76GhjDp
etc ...

Mais bien évidemment avec toujours cette restriction sur les fichiers commençant par Z* et comptant au max 8 caractères ?
Merci bien.
Ka-El
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
26 janv. 2017 à 15:37
essayer
$ commande  | awk -F / 'length($NF)<=8 && $NF ~ /^Z/ {print $NF}' 
0
Ka-El Messages postés 260 Date d'inscription lundi 28 novembre 2011 Statut Membre Dernière intervention 7 août 2020 > dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024
26 janv. 2017 à 16:21
Bon, vu ma nullité en shell, j'ai failli conserver "commande" dans ma ligne ! ;-)

Non, mais j'ai essayé effectivement plusieurs types de "ls", mais ça ne donne aucun résultat.
D'ailleurs Est-ce que la commande "ls" est bien recommandée pour chercher dans deux arborescences différentes ? J'ai un doute...
0
Utilisateur anonyme
26 janv. 2017 à 16:45
l'option
-printf
de
find
permet un affichage fin des données concernant les fichiers.

au pire, tu pourrais faire un
-exec
de
stat
, qui permet aussi de choisir (affichage fin) quelles données concernant les fichiers afficher.
0