IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes POSIX Discussion :

Problème avec "ls -R" => Liste fichier/dossier en récursif sur OS X avec le terminal


Sujet :

Shell et commandes POSIX

  1. #1
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 174
    Points
    4 174
    Par défaut Problème avec "ls -R" => Liste fichier/dossier en récursif sur OS X avec le terminal
    Bonsoir,

    pour lister les fichiers/dossiers en récursif avec le terminal, j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ls -R 'le chemin voulu' >>Monfichier.txt
    1er problème
    il se peut que j'ai une application en ".app" dans un dossier qui n'est pas celui des applications;
    j'aimerai que celui-ci ne soit pas considéré comme un dossier à lister avec tout son contenu en récursif, mais qu'il soit lister comme un fichier du style monApplication.app comme pourrait l'être monImage.jpg

    2ème problème
    j'aimerai être sûr que le résultat soit en liste et non en colonne et si c'est possible avoir la possibilité d'avoir le chemin complet de chaque résultat comme "pwd" peut donner le chemin du "cd" mais, pour les fichiers

    Exemple actuellement:
    Chemin du dossier lsiter/…/Dossier toto:
    fichier_1.extension
    fichier_2.extension


    Ce que j'aimerai :
    Chemin du dossier lsiter/…/Dossier toto:
    Chemin du dossier lsiter/…/Dossier toto/fichier_1.extension
    Chemin du dossier lsiter/…/Dossier toto/fichier_2.extension
    Chemin du dossier lsiter/…/Dossier toto/…


    3ème et dernier problème
    je dois lister des images à mon travail qui sont sur un serveur non unix je pense (windows … ?? je m'y connais pas trop en serveur - je travail sur Mac),
    le problème est que certains chemins ou noms de fichiers ont des caractères accentués (oui je sais c'est mieux sans les accents, et je ne comprends pas qu'ils aient laissé faire … mais je ne peux rien changer et je dois faire avec),
    du coup dans mon fichier texte qui me récupère le résultat les caractères accentués sont remplacés par 2, 3 caractères ce qui fausse le résultat pour chaque chemins ou fichiers contenant ces caractères accentués
    Comment puis je faire pour obtenir directement le résultat avec les bons accents (je suppose que c'est une histoire d'encodage, mais jusqu'à présent j'ai fait chou blanc)

    Je vous remercie d'avance de l'aide que vous pourrez m'apporter

    Ryu
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 539
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 539
    Points : 19 361
    Points
    19 361
    Par défaut
    Bonjour,

    jusqu'à « sur un serveur non unix », c'est facilement faisable avec find, après je ne sais pas.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Points : 7 882
    Points
    7 882
    Par défaut
    - 1er problème

    Il manque des infos pour que ce soit clair.

    - 2ème problème

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $(find chemin -type f)
    - 3ème et dernier problème

    Il faudrait que tu donnes des exemples concrets de noms de fichiers à problème.
    ɹǝsn *sıɹɐlos*

  4. #4
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 174
    Points
    4 174
    Par défaut
    Bonjour,

    Merci N_BaH de ton 1er retour. J'essaie de voir les différentes alternatives. Je suis parti sur ls au départ car il me semble que c'est le plus rapide (à moins que je me trompe); il y a aussi locate sur sa propre machine, mais il faut faire le nécessaire pour le rendre actif.
    Je pensais au départ que l'on pouvait coupler ls -R avec une combinaison supplémentaire via le signe | et autre chose …

    jlliagre merci ton retour.
    Pour la partie 1, dis moi quels types de précisions as tu besoins ?
    Ce que je peux rajouter de plus, c'est qu'il 'm'arrive de tester une application que je ne mets pas dans le dossier "Applications" mais que j'ai pu installer par glissage sur le bureau ou dans téléchargement par exemple.
    Les applications sur OS X sont en ".app", et ressemble à des packages, c'est à dire, quand on voit une application dans le finder elle à l'air physiquement comme un fichier (sauf que c'est une application), mais lorsque l'on fait un clic droit sur ladite application, on peut l'ouvrir comme un dossier et voir tous les éléments constituant cette application (fichiers, sous-dossiers, …)

    un exemple représentatif de ce que l'on peut voir avec une application :

    Nom : 0001.png
Affichages : 1478
Taille : 17,5 Ko

    puis quand on l'ouvre avec "Afficher le contenu du paquet" :

    Nom : 0002.png
Affichages : 1553
Taille : 26,5 Ko

    et donc ce contenu est listé, alors que moi je ne veux que l'application au listage (Adobe Photoshop CS6) et non son contenu

    Pour le 2è point je crois que je me suis mal exprimé car quand je parler en "liste" j'avais à l'esprit avoir chaque résultat à la ligne comme montré sur le poste #1 (donc en fait ça ne doit pas être liste ou colonne)
    (toujours en récursif)

    Pour le 3è point, je vais donner des exemples de ce que je peux avoir en résultat :
    dans les noms de dossiers :
    PDT00575_Feuillard polypropyleÃÄne en boiÃÇte distributrice eÃÅconomique
    PDT00737_Essuie-mains pliage encheveÃÇtreÃÅ Tork
    PDT00789_Serviette blanche aÃÄ pliage deÃÅcaleÃÅ


    dans les fichiers
    BoiÃÇte viennoiserie.jpg
    et ainsi de suite

    c'est le même problème de reconnaissance de caractères, que ça soit dans les chemins, noms de dossiers ou noms de fichier

    merci pour votre retour

    Ryu

    Edit : Précisions supp. sur le point 3, en refaisant un test avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ls -R 'le chemin voulu'
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ls -R 'le chemin voulu' >>Monfichier.txt
    les caractères accentués apparaissent correctement dans le terminal, ce qui veut dire que le problème provient lorsque je fais la même ligne de commande mais enregistré dans un fichier texte en plus.
    Donc comment enregistré correctement le résultat dans un fichier texte avec le bon encodage pour ne plus avoir se problème ?
    - j'ai remarqué une chose supplémentaire, la command ls -R liste tous les dossiers comme ceci :

    PDT00002_lames pour cutter Olfa-v1
    PDT00003_Coupe-film Opticut


    puis je les retrouve beaucoup plus bas avec le chemin et le contenu comme ceci :

    /Volumes/Perigee_RJPF/Bureau/Publishing/Base Images/Images Produits/PDT00002_lames pour cutter Olfa-v1:
    6211
    6211S

    /Volumes/Perigee_RJPF/Bureau/Publishing/Base Images/Images Produits/PDT00002_lames pour cutter Olfa-v1/06211:

    /Volumes/Perigee_RJPF/Bureau/Publishing/Base Images/Images Produits/PDT00002_lames pour cutter Olfa-v1/6211S:
    6211S_S_FR.eps

    /Volumes/Perigee_RJPF/Bureau/Publishing/Base Images/Images Produits/PDT00003_Coupe-film Opticut:
    436

    /Volumes/Perigee_RJPF/Bureau/Publishing/Base Images/Images Produits/PDT00003_Coupe-film Opticut/436:
    436_A1_FR.eps
    436_A_FR.eps
    436_S_FR.eps


    Comment puis je faire pour éviter cette répétition sachant que je n'ai que besoin de des chemins des dossiers et les fichiers contenus dans ceux-ci (dossiers vides compris) comme cela :

    /Volumes/Perigee_RJPF/Bureau/Publishing/Base Images/Images Produits/PDT00003_Coupe-film Opticut/436:
    436_A1_FR.eps
    436_A_FR.eps
    436_S_FR.eps
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie

  5. #5
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par jlliagre Voir le message
    - 1er problème

    Il manque des infos pour que ce soit clair.
    Sous macos, les applications sont des vrais répertoires (avec des droits étendus, repérables par le caractère "@"):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    $ ls -ldF Godot.app
    drwxr-xr-x@ 3 jack  staff  102 10 aoû  2016 Godot.app/
     
    $ ls -lRF Godot.app
    total 0
    drwxr-xr-x@ 6 jack  staff  204 10 aoû  2016 Contents/
     
    Godot.app/Contents:
    total 16
    -rwxr-xr-x@ 1 jack  staff  1868 10 aoû  2016 Info.plist*
    drwxr-xr-x@ 3 jack  staff   102 10 aoû  2016 MacOS/
    -rw-r--r--@ 1 jack  staff     9 10 aoû  2016 PkgInfo
    drwxr-xr-x@ 3 jack  staff   102 10 aoû  2016 Resources/
     
    Godot.app/Contents/MacOS:
    total 187888
    -rwxr-xr-x@ 1 jack  staff  96195572 10 aoû  2016 Godot*
     
    Godot.app/Contents/Resources:
    total 240
    -rw-r--r--@ 1 jack  staff  120942 10 aoû  2016 Godot.icns
    Là, j'ai choisi une toute petite application, mais certaines peuvent contenir bôôôôôôcoup de sous-répertoires et fichiers (Xcode en contient 686382).

    Si j'ai bien compris, l'utilisateur veut parcourir récursivement un répertoire, mais pas les sous-répertoires qui sont des applications.

    Je ne connais pas suffisamment "find" pour lui dire de:
    - parcourir récursivement un répertoire
    - pour un sous-répertoire de nom "*.app", l'afficher avec son chemin absolu et stopper la récursion
    - pour tout autre fichier, l'afficher avec son chemin absolu

    Si je devais vraiment le faire tout seul, avec mes maigres connaissances de "find", je ferais une 1ère passe pour afficher uniquement tous les "*.app" et une 2ème passe avec un exclude sur "*.app"...

  6. #6
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 174
    Points
    4 174
    Par défaut
    bonsoir jack-ft,

    oui en effet c'est logique, par contre je ne sais pas si il faut stopper la récusion, j'ai l'impression que ça risque de fausser le résultat.
    Par contre sans coder, si on réfléchi avec logique maintenant que tu soulèves le sujet, peut être qu'il faudrait qq ch de la sorte :
    - on envoi le listage en récursion, si on tombe sur "*.app" on le force à passer au prochain fichier ou dossier, mais comment faire …

    je continue mes recherches un peu à droite à gauche afin de voir les différents codes

    Merci pour tes idées, n'ésites pas à repasser si tu as des infos supp.

    PS : je suis tombé sur ce code qui ne résout pas mon pb de ".app" mais qui donne le chemin complet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     ls -R /path | awk '
    /:$/&&f{s=$0;f=0}
    /:$/&&!f{sub(/:$/,"");s=$0;f=1;next}
    NF&&f{ print s"/"$0 }'
    Ryu

    Edit : Y a t-il moyen d'utiliser -maxdepth 0 pour les "*.app*" ??
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie

  7. #7
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 266
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 266
    Points : 12 681
    Points
    12 681
    Par défaut
    Bonjour,

    J'ai pas de OS x sous la main, mais en regardant le man du find, j'ai vu qu'il existait des commandes du genre mdfind qui pourraient répondre au moins à la première question.
    Pour la deuxiéme, au pire, find peut faire l'affaire.
    Pour la troisième, je pense que l'enregistrement dans le fichier est correct, c'est juste un problème d'affichage. Si les fichiers sont sur du ntfs, il y a de forte chance que cela soit de l'utf8, d'ailleurs, comment accèdes-tu à ces fichiers ? c'est un point de montage ? si oui, regarde les options de montage, tu auras peut-être l'indication de la locale utilisée.
    Cordialement.

  8. #8
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 174
    Points
    4 174
    Par défaut
    bonsoir disedorgue,

    merci de t'être penché sur mon problème
    je vais jeter un coup d'œil à mdfind sur le net.

    Concernant le 3è point, c'est un serveur qui est monté sur Mac après j'indique le chemin du dossier concerné à lister dans les commandes du terminal.
    Comme le terminal créer le fichier texte et écris les résultats à la volé, il doit manqué un petit qq chose. Peut être que le fichier texte créé par le terminal est encodé en MACROMAN,
    alors que les résultats du terminal sont en UTF8 (cf "Edit" du post #4), mais je ne sais pas comment forcé la création du fichier en UTF8 (donc pas encore testé)

    Qu'appelles tu un point de montage ?
    Où trouve je cela :
    regarde les options de montage, tu auras peut-être l'indication de la locale utilisée
    La seule manière que je connaisse de monter un serveur sur ma machine est de faire "Réseau" (Commande K) puis de mettre l'adresse du serveur (en smb ou ftp),
    puis de sélectionner celui qui m'intéresse afin de le faire monter

    Ryu

    Edit : j'ai bien l'impression que mdfind concerne les métas datas, à moins que je me trompe, pas sûr que cela soit utile …
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie

  9. #9
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par RyuAutodidacte Voir le message
    Edit : Précisions supp. sur le point 3, en refaisant un test avec ls -R 'le chemin voulu' au lieu de ls -R 'le chemin voulu' >>Monfichier.txt les caractères accentués apparaissent correctement dans le terminal, ce qui veut dire que le problème provient lorsque je fais la même ligne de commande mais enregistré dans un fichier texte en plus.
    Pourrais-tu donner le résultat de ces commandes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ls -R 'le chemin voulu' | egrep '^PDT00789_Serviette blanche' | od -c
    ls -R 'le chemin voulu' | egrep '^PDT00789_Serviette blanche' > /tmp/foo.txt
    file /tmp/foo.txt
    od -c /tmp/foo.txt

    Comment puis je faire pour éviter cette répétition sachant que je n'ai que besoin de des chemins des dossiers et les fichiers contenus dans ceux-ci (dossiers vides compris) comme cela :
    Pas très clair pour moi...

    Veux-tu dire que si un répertoire ne contient que des sous-répertoires et aucun fichier direct, tu ne veux pas voir le contenu du répertoire (c'est-à-dire la liste des sous-répertoires), mais que tu veux le contenu des sous-répertoires (sous réserve qu'ils contiennent des fichiers)?

  10. #10
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Points : 7 882
    Points
    7 882
    Par défaut
    Essaie:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (printf '\xEF\xBB\xBF'; find "chemin voulu" -name "*.app" -print -prune -o -print ) > fichier.txt
    Le printf ajoute un indicateur d'encodage UTF-8 au fichier résultat.

    Le find ne descend pas dans les répertoires *.app
    ɹǝsn *sıɹɐlos*

  11. #11
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 174
    Points
    4 174
    Par défaut
    Bonjour,

    jack-ft : je ne comprends pas très bien ce que fait le test (je l'ai fait sur ma machine et non celle du taf, donc je ne suis pas dans les mêmes condtions),
    le seul résultat visible que je vois est :
    /tmp/foo.txt: empty

    Pour la partie qui n'est pas très clair :
    en fait dans le résultat obtenu à mon travail, j'ai les noms de tous les dossiers scannés en début du résultat, puis je les retrouve à la suite de tous ces dossiers avec le chemin complet.
    imaginons que j'ai 15 dossiers dans le dossier à scanner en résultat je vais avoir :

    Dossier1 => 1ère fois que l'on voit le nom des dossiers (chemin non indiqué)

    Dossier15

    puis
    MonChemin/…/Dossier1: => on retrouve ces mêmes dossiers avec le chemin (cela fait répétition, non ?)
    Fichier1_1
    Fichier1_2

    MonChemin/…/Dossier3:
    Fichier2_1
    Fichier2_2
    Fichier2_3

    MonChemin/…/Dossier15:
    Fichier15_1



    jlliagre : pour le point 1: le résultat est quasi parfait, je n'ai plus le listage des applications/dossiers en ".app" mais seulement "application.app" avec le chemin complet et la récursivité pour tous dossiers, fichiers et applications

    juste 2 petits points, un résultat que je ne comprends pas et petite question et explication sur le code :
    • tous les fichiers invisibles commençant par un "." apparaissent comme par exemple ".DS_Store", y a t-il moyen de ne pas les lister ?
    • les chemins vers un dossier sont indiqués sans "/" à la fin, est il possible de le spécifier ?
    • un fichier nommé "Planning 2016 essai.xlsm" revient dans le résultat comme ceci : "/Users/KAB/Downloads/~$Planning 2016 essai.xlsm", donc avec ce signe supplémentaire "~$". Pourquoi ?
    Est il possible d'avoir qq explications sur le code ?


    Je dois faire d'autres tests dans les conditions adéquat, donc à mon taf

    En tout qu'à grand (à tous bien sûr) pour votre aide et réactivité, et si vous avez d'autres pistes je suis preneur

    Ryu
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie

  12. #12
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Points : 7 882
    Points
    7 882
    Par défaut
    Citation Envoyé par RyuAutodidacte Voir le message

    jlliagre : pour le point 1: le résultat est quasi parfait, je n'ai plus le listage des applications/dossiers en ".app" mais seulement "application.app" avec le chemin complet et la récursivité pour tous dossiers, fichiers et applications

    juste 2 petits points, un résultat que je ne comprends pas et petite question et explication sur le code :
    • tous les fichiers invisibles commençant par un "." apparaissent comme par exemple ".DS_Store", y a t-il moyen de ne pas les lister ?
    Oui:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (printf '\xEF\xBB\xBF'; find "chemin voulu" -name "*.app"  -print -prune -o -name ".*" -o -print ) > fichier.txt
    • les chemins vers un dossier sont indiqués sans "/" à la fin, est il possible de le spécifier ?
    Oui:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (printf '\xEF\xBB\xBF'; find "chemin voulu" -name "*.app"  -print -prune -o -name ".*" -o -type d -exec sh -c 'echo $1/' sh {}  \; -o -print ) > fichier.txt
    • un fichier nommé "Planning 2016 essai.xlsm" revient dans le résultat comme ceci : "/Users/KAB/Downloads/~$Planning 2016 essai.xlsm", donc avec ce signe supplémentaire "~$". Pourquoi ?
    Je n'ai pas d'explication particulière. Si find trouve ce fichier, c'est qu'il existe. C'est probablement un fichier temporaire ou de backup. Le fichier n'est-il pas en cours d'édition ou ouvert pas une application ?

    Est il possible d'avoir qq explications sur le code ?
    Oui:

    ( # debut de sous shell pour regrouper la sortie des deux commandes

    printf '\xEF\xBB\xBF'; # met un marqueur UTF-8 en début de fichier (BOM)

    find "chemin voulu" # On explore récursivement le dossier "chemin voulu"

    -name "*.app" -print -prune # Si on trouve quelque chose dont le nom se termine par .app, on affiche le nom et on ignore ce qu'il y a en dessous (to prune en anglais = élaguer)

    -o # ou bien

    -name ".*" # Si le nom du fichier/dossier commence par ".", on ne fait rien (on n'affiche pas son nom)

    -o # ou bien

    -type d -exec sh -c 'echo $1/' sh {} \; # s'il s'agit d'un dossier, on execute un shell juste pour ajouter le "/" à la fin du nom

    -o # ou bien

    -print # on affiche le nom du fichier ou du dossier trouvé

    ) > fichier.txt # on redirige le résultat des commandes printf et find dans un fichier
    ɹǝsn *sıɹɐlos*

  13. #13
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 174
    Points
    4 174
    Par défaut
    Re jlliagre,

    Ultra top merci beaucoup, ça résout complètement le : Point 1 => <= Point 1

    pour ces explications très instructives

    je ferai un test demain à mon taf pour voir ce qu'il en ai (en conditions réels y a pas mieux ), ça résoudra surement le point 3

    C'est probablement un fichier temporaire ou de backup
    en effet maintenant que tu le dis tu as surement raison, mais étant donné que ce fichier n'est pas ouvert, il doit être latent et n'a pas été supprimé automatiquement alors qu'il aurait dû l'être …

    Pour le point 2, je vais émettre une réserve, dans le sens où je trouve la présentation sur une seule colonne intéressante comme suit :
    Indications des chemins pour les dossiers, les fichiers se trouvant dedans sont indiqués juste en dessous (sans le chemin) - voir avec une séparation en retour chariot à chaque nouveau chemin de dossier

    MonChemin/…/…/Dossier1:
    fichier1_1
    fichier1_2

    fichier1_nb
    Séparation par retour chariot
    MonChemin/…/…/…/Dossier2:
    fichier2_1

    fichier2_nb
    Séparation par retour chariot
    MonChemin/…/…/…/Dossier3: =>Dossier vide
    Séparation par retour chariot
    MonChemin/…/…/…/Dossier4:
    fichier2_1


    et ainsi de suite

    Je vous tiens au courant des résultats pour le serveur dès que j'aurais fait les tests

    Ryu
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie

  14. #14
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Points : 7 882
    Points
    7 882
    Par défaut
    Citation Envoyé par RyuAutodidacte Voir le message
    Pour le point 2, je vais émettre une réserve, dans le sens où je trouve la présentation sur une seule colonne intéressante comme suit :
    Indications des chemins pour les dossiers, les fichiers se trouvant dedans sont indiqués juste en dessous (sans le chemin) - voir avec une séparation en retour chariot à chaque nouveau chemin de dossier
    Une "réserve", c'est un peu abusif vu que tu souhaites maintenant quelque chose que tu n'a pas évoqué auparavant.

    Voici quand même comment faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    (
        printf '\xEF\xBB\xBF'
        find "chemin voulu" \
            -name "*.app"  -print -prune -o \
            -name ".*" -o \
            -type d -exec sh -c 'printf "\n%s:\n" "$1" ' sh {}  \; -o \
            -exec basename {} \;
    ) > fichier.txt
    ɹǝsn *sıɹɐlos*

  15. #15
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 174
    Points
    4 174
    Par défaut
    Une "réserve", c'est un peu abusif vu que tu souhaites maintenant quelque chose que tu n'a pas évoqué auparavant.
    En effet, et je ne dis pas le contraire, c'étais sous entendu mais peut être pas assez explicite
    Pour le point 2, je vais émettre une réserve, dans le sens où je trouve la présentation sur une seule colonne intéressante comme suit :
    donc oui c'est une indication de changement d'avis d'ou ma réserve (le code en post #12 résout le point 2 tel la demande initial)

    Méa culpa, 1000 excuses c'est de ma faute j'ai qu'à être plus explicite

    Merci pour le nouveau code, je vais le tester …

    Ryu
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie

  16. #16
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 174
    Points
    4 174
    Par défaut
    Bonjour tout le monde,

    Voilà le résultat du point 3 :

    jlliagre, Point 3 => <= Point 3

    (cela résout aussi le point 2 de la demande initial - puisque j'ai fait un changement pour cette demande -veuillez m'en excusé ça ne se fait pas trop
    et ce n'est pas dans mes habitudes)

    J'ai pu lister le serveur sans problème, tous les problèmes de caractères accentués ont disparu et le fait d'avoir le chemin complet c'est parfait
    un grand à toi pour ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (printf '\xEF\xBB\xBF'; find "chemin voulu" -name "*.app"  -print -prune -o -name ".*" -o -type d -exec sh -c 'echo $1/' sh {}  \; -o -print ) > fichier.txt
    À lui tout seul il résout les points 1, 2 et 3 de la présentation initial

    En ce qui concerne la modification du point 2 je dois faire encore quelques tests car j'ai l'impression d'avoir eu 2 résultats légèrement différents
    (Machines différentes, systèmes différents et conditions différentes) - je vous tiens au courants une fois fait

    PS : j'ai une nouvelle demande concernant le listage, que me conseillez vous, le faire sur la même demande ou ouvrir un nouvelle discussion ??

    Merci pour le temps passé

    Ryu
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie

  17. #17
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par RyuAutodidacte Voir le message
    PS : j'ai une nouvelle demande concernant le listage, que me conseillez vous, le faire sur la même demande ou ouvrir un nouvelle discussion ??
    Si c'est une amélioration de la commande proposée (qui n'est pas triviale!), il vaut mieux le faire dans la même discussion.
    Si c'est une nouvelle commande indépendante de la précédente, il vaut mieux ouvrir une nouvelle discussion.

  18. #18
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 174
    Points
    4 174
    Par défaut
    Bonjour tous,

    bonjour jlliagre,
    je reviens sur le point 2 modifier après test de ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    (
        printf '\xEF\xBB\xBF'
        find "chemin voulu" \
            -name "*.app"  -print -prune -o \
            -name ".*" -o \
            -type d -exec sh -c 'printf "\n%s:\n" "$1" ' sh {}  \; -o \
            -exec basename {} \;
    ) > fichier.txt
    les tests effectuer sont - utilisation du code (n'ayant suffisamment de connaissance pour savoir ce qui est normal ou pas je ne fais que remonter les constations/défauts) :

    - sur le serveur photos dont le dossier source pour le listage est constitué de sous-dossiers avec des images;
    les chemins indiqués par les sous-dossiers indiquent des chemins complets avec leurs fichiers respectifs en dessous de chaque chemins des sous-dossiers correspondants
    on a donc bien ce schéma :
    MonChemin/…/…/Dossier1:
    fichier1_1
    fichier1_2

    fichier1_nb
    Séparation par retour chariot
    MonChemin/…/…/…/Dossier2:
    fichier2_1

    le chemin du dossier source est défini comme ceci : /Volumes/ServeurChoisi/Bureau/Publishing/Base Images/Images Produits:
    le chemin des sous-dossiers sont définis de la sorte (le chemin changeant bien sur pour chaque sous-dossier) : /Volumes/ServeurChoisi/Bureau/Publishing/Base Images/Images Produits/PDTXXXXX_NomDuProduit/REFXXXX:

    - Sur mon Ordi perso, dont le dossier source pour le listage est constitué de fichiers et sous-dossiers (déjà une différence):
    le chemin du dossier source est défini comme ceci : /Users/UserName/Downloads/: => 1ère différences la fin du chemin se finissant par "/:"
    le chemin des sous-dossiers sont définis de la sorte : /Users/UserName/Downloads//Sous-DossierNiv1/Sous-DossierNiv2/Sous-DossierNiv3: => 2è différence, un double slash "//" après le dossier source
    Mis à part cette partie (différentes du schéma précédent)
    MonChemin/…/…/DossierSource:
    fichierSource_1
    fichierSource_2

    je pensais que le schéma était identique à celui du serveur qui a été listé comme ceci :
    MonChemin/…/…/Dossier1:
    fichier1_1
    fichier1_2

    Mais en fait ce n'est pas le cas, car le schéma peut être comme ceci :
    MonChemin/…/…/Dossier1:
    fichier1_1
    fichier1_2

    fichierSource_n1
    fichierSource_n2

    Donc des fichiers du dossiers sources se retrouvant juste en dessous de fichiers appartenant à des sous dossiers

    et là c'est le drame ça fausse le listage et on peut penser qu'un fichier appartient à un sous-dossier alors que celui-ci appartient en réalité au dossier source

    - Donc, j'ai voulu faire un 3è test (tjs avec mon ordi) mais avec : ls -R "Chemin du dossier source" > FichierTest.txt représentant à peu près le ce que je souhaite
    (ressemblant au code ci-dessus dans la disposition des dossiers/fichiers puisque je me suis basé sur ls -R),
    mais dont je souhaite garder les 3 points résolus en post #12, c-à-d. :
    • le problème d'encodage,
    • le problème des .app (listé que les applications et non leurs contenus)
    • le problème des fichiers invisibles commençant par un "." que je ne veux pas lister
    Quand je fais ls -R "Chemin du dossier source", le chemin du dossier source n'apparait pas dans la liste, alors qu'il me le faudrait en 1ère ligne du résultat
    Par contre ls -R … me met bien tous les fichiers qui sont à la base du dossier source, les uns en dessous des autres et en 1è position de la liste puis les sous-dossiers (avec chemins) avec leurs fichiers respectifs

    [Donc l'idéal si c'est possible, serait d'avoir la même présentation ls -R … avec en 1ère ligne le chemin du dossier source, les fichiers à la base du dossier source juste en dessous puis, les sous-dossiers avec leurs fichiers respectifs
    tout en gardant les 3 points résolus ci-dessus.

    Merci d'avance pour toutes aides/directions apportées pour arriver à ce résultat.

    PS : la nouvelle demande concerne à une simulation de tree sur cette base :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find "chemin voulu" -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'"
    avec quelques modifications (2 modifications dans le résultat), mais je pense ouvrir une nouvelle discussion

    Ryu
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie

  19. #19
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Points : 7 882
    Points
    7 882
    Par défaut
    Je n'ai pas compris grand chose à la description du problème rencontré, c'est ok sur le serveur photo mais pas sur ton ordinateur perso, c'est ça?

    Ton serveur photo ton ordi perso sont bien tous les deux sous OS X ?

    Le mieux serait de mettre, entourés par des tags code, d'une part un vrai échantillon du résultat obtenu avec la commande et d'autre par le résultat souhaité.

    En attendant, tu peux essayer d'ajouter l'option "-depth" au début voir si ça améliore le résultat.
    ɹǝsn *sıɹɐlos*

  20. #20
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 174
    Points
    4 174
    Par défaut
    Re,

    je ne pense pas que cela soit forcément ok sur le serveur, mais le fait que l'agencement des fichiers et dossiers soit différents entre le serveur et mon Mac peut jouer.
    et bien sur c'est fait à partir de OS X sur les 2 ordi
    je vais essayer de faire plus simple et plus court dans les explications en schématisant puis en donnant un exemple concret.

    • Les sous-dossiers et les fichiers mis en gras sont ceux qui sont au 1er niveau, en dessous du dossier source choisi pour le listage
    • Quand il y a des sous sous niveau j'utilise les "||" permettant la séparation entre 2 dossiers/fichiers de 1er niveau (chemin/DossierSource/1er niveau) :
    • le signe ">" montre que l'on descend de niveau, la "," montrant les dossiers/fichiers au même niveau

    Sur le serveur : Dossier source >> Sous-Dossier1 > Sous-Dossier1_1 >Sous-Dossier1_1_1 > photos1, photos2, photos3, … || Sous-Dossier2 > Sous-Dossier1_1 > photos1, photos2 || Sous-Dossier3

    Sur MonOrdi : Dossier source >> Fichier1, Fichier2, Fichier3 || Sous-Dossier1 > Sous-Dossier1_1,Sous-Dossier1_2 > photos1, photos2, photos3, … || Sous-Dossier2 > Sous-Dossier2_1 > photos1, photos2 || Fichier4, Fichier5, Fichier6…

    Donc on voit bien ici que sur le serveur il n'y a pas de fichier au 1er niveau tandis que sur mon ordi, j'ai plusieurs fichiers au 1er niveau (Fichier 1 à 6, … fichiers qui sont séparé par des sous-dossiers de 1er niveau (Sous-Dossier1 et Sous-Dossier2))
    Les fichiers Fichier4, 5 et 6 (en rouge) devraient être sous le chemin suivant : MonChemin/DossierSource/Fichier4 ,5 et 6; ce qui n'est pas le cas, il se retrouve en dessous du chemin suivant : MonChemin/DossierSource/Sous-Dossier2/Sous-Dossier2_1/Fichier4 ,5 et 6

    Maintenant je passe à l'exemple concret - le dossier choisi pour le listage est /Users/UserName/Downloads/: - tous les fichiers en vert appartiennent au même lien, hors certains se retrouve en dessous d'un lien qui n'est pas le leur
    PS : d'où la comparaison avec ls -R qui ne reproduit pas le problème, mais qui malheureusement me permet pas d'avoir le résultat escompté avec les points cités dans mon précédent post

    /Users/UserName/Downloads/:
    telechargement-2.pdf
    telechargement.pdf
    0020965626.pdf
    05718510.pdf
    06077640.pdf
    101.jpg
    /Users/UserName/Downloads//Demo_barremenu:
    creation barre menu perso.xls
    creation barre menu popup.xls
    Demo_barremenu.zip
    dermot avec InStrRev.xls
    dermot.xls
    des_commandes_plus_avancees_Unix.pdf
    developpez.pdf
    Découvrir_le_terminal.pdf
    DHfpeqMBvRK_variables_tableaux.xls
    dingitsetup.dmg
    disclaimer.zip
    DivXInstaller.dmg
    dmPDF.pdf
    document(1).pdf
    document(2).pdf
    document.pdf
    donau.zip
    DV77.xls
    EnregistreClasseur.xls

    J'espère avoir été plus clair

    Ryu
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. Réponses: 0
    Dernier message: 14/11/2014, 16h18
  2. Réponses: 1
    Dernier message: 14/10/2011, 16h33
  3. Problème avec FTP et liste de fichiers
    Par Xphil dans le forum Langage
    Réponses: 14
    Dernier message: 14/04/2010, 19h31
  4. FTP Problème avec commons net récuperation de la liste fichier
    Par reverse_engineer dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 05/08/2008, 16h58
  5. liste fichiers (TListView) avec icones
    Par pjb dans le forum C++Builder
    Réponses: 2
    Dernier message: 01/07/2005, 10h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo