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. #21
    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
    Il faudrait une option "-depth" inversée mais ça n'existe pas.

    Voilà une méthode qui devrait le faire à partir de "ls":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    (
        printf '\xEF\xBB\xBF'
        ls -RF répertoire |
          awk '
          /\.app\//{gsub("\/$",""); print; next }
          /\/$/ {next}
          /\.app:$/ {i=1}
          /^$/ {if(i==1) {i=0; next} i=0}
          {if(i!=1) print}
          '
    ) > fichier.txt
    ɹǝsn *sıɹɐlos*

  2. #22
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 273
    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 273
    Points : 12 708
    Points
    12 708
    Par défaut
    EDIT: Trop tard, mais je laisse tout de même l'explication...
    Je n'ai pas de solution à proposer, mais ici, cela semble logique pour que cela ne fonctionne pas correctement:
    -find parcours dans l'ordre d'apparition sur le disque
    -find descend bien dans chaque répertoire récursivement
    Donc si sur le disque j'ai:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    toto
    toto/titi/tat.fic
    toto/tut.fic
    Suite au basename, j'aurai comme affichage:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    toto
     
    toto/titi
    tat.fic
    tut.fic
    Pour que cela fonctionne, il faudrait que find pour chaque répertoire affiche en premier lieu les fichiers réguliers du répertoire et ensuite qu'il s'occupe des répertoires du répertoire en cours de traitement mais là, je ne vois pas comment faire ça simplement...
    Cordialement.

  3. #23
    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 pour l'explication

    jlliagre, merci pour ce nouveau code.
    j'ai mis un peu de temps à répondre car j'essaie un maximum de faire des recherches sur le net et aussi de trouver de la doc permettant à un débutant comme moi d'évoluer.
    j'ai testé ton nouveau code, malheureusement je me retrouve toujours avec les sous-dossiers et fichiers du ".app" et ce pour toutes les applications

    /Users/UserName/Downloads//TextMate.app/Contents/SharedSupport/Support/lib/tm:
    detach.rb
    event
    event.rb
    executor.rb
    htmloutput.rb
    markdown.rb
    process.rb
    require_cmd.rb
    save_current_document.rb
    tempfile.rb
    NOUVEAU CHEMIN A VERIFIER

    je ne suis vraiment pas du tout à l'aise avec ton code dû à mon très très faible niveau, mais je vais quand même essayer d'en déduire le fonctionnement
    D'après ce que j'ai pu lire, awk et une alternative à grep, apparu dans les années 70 mais avec une grande souplesse et proche du C dans l'écriture (si j'ai bien compris), créé par 3 personnes dont les initials font awk)

    Dans ton code ce que j'ai l'impression, c'est dès que awk voit .app sans rien derrière (.app/……), il le print.
    Mais dès que awk voit un chemin .app comme un dossier, on a donc en schématisant …… .app/…… tant que awk à un résultat, le début jusqu'à la fin du paragraphe/ligne n'est pas en print,
    mais si le résultat est vide il redonne la main sur le print. (grosso modo)
    Est ce cela ?

    j'ai volontairement simulé ce qui se passe dans le résultat avec le tableau ci-dessus avec les 2 dernières lignes, où l'on se retrouve avec une ligne vide puis un nouveau chemin à vérifier.
    j'ai voulu tenté un grep mais sans résultat ou presque. Dans le résultat les lignes contenant les chemins comme par exemple /Users/UserName/Downloads//TextMate.app/Contents/SharedSupport/Support/lib/tm: sont effacées,
    mais malheureusement pas les fichiers en dessous n'ayant pas un chemin complet (cf tableau ci-dessus pour les fichiers, pour exemple)

    je ne sais pas si je me suis trompé dans le raisonnement du code que tu m'a donné mais si c'est le cas, peut -on faire comme cela :
    A chaque passage sur un dossier qui va être scanné, si celui-ci contient ".+app/.+" ne plus print jusqu'à une ligne vide puis vérification du nouveau chemin si valide ou pas
    (si valide on print sinon on ne print plus jusqu'à une ligne vide)

    PS : peut on faire en sorte que la 1ère ligne en print soit le chemin source ?



    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

  4. #24
    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
    Oui, tu as compris la logique de mon script mais il y a un problème que je ne m'explique pas encore.

    Comme je n'ai pas de mac pour tester, pourrais-tu poster le résultat de la commande:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ls -lR répertoire | grep \.app | head | od -c
    ?
    ɹǝsn *sıɹɐlos*

  5. #25
    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,
    Ok ça marche, je ferai déjà le test sur mon post de travail et ce soir sur mon Mac (OS X mais 2 config différentes), les résultats pour ce soir

    Merci

    Ryu

    Edit : Résultat ordi du taf (celui de mon ordi ce soir) :

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    0000000    d   r   w   x   r   -   x   r   -   x               3       p
    0000020    a   o           s   t   a   f   f                            
    0000040        1   0   2       2   9       o   c   t           2   0   1
    0000060    4       N   O   M   S       D   .   a   p   p  \n   d   r   w
    0000100    x   r   -   x   r   -   x               3       p   a   o    
    0000120        s   t   a   f   f                                   1   0
    0000140    2       2   9       o   c   t           2   0   1   3       N
    0000160    O   M   S   .   a   p   p  \n   d   r   w   x   r   -   x   r
    0000200    -   x   @           3       p   a   o           s   t   a   f
    0000220    f                                   1   0   2       1   4    
    0000240    a   v   r           2   0   1   5       V   L   C   .   a   p
    0000260    p  \n   /   U   s   e   r   s   /   p   a   o   /   D   o   w
    0000300    n   l   o   a   d   s   /   /   N   O   M   S       D   .   a
    0000320    p   p   :  \n   /   U   s   e   r   s   /   p   a   o   /   D
    0000340    o   w   n   l   o   a   d   s   /   /   N   O   M   S       D
    0000360    .   a   p   p   /   C   o   n   t   e   n   t   s   :  \n   /
    0000400    U   s   e   r   s   /   p   a   o   /   D   o   w   n   l   o
    0000420    a   d   s   /   /   N   O   M   S       D   .   a   p   p   /
    0000440    C   o   n   t   e   n   t   s   /   M   a   c   O   S   :  \n
    0000460    /   U   s   e   r   s   /   p   a   o   /   D   o   w   n   l
    0000500    o   a   d   s   /   /   N   O   M   S       D   .   a   p   p
    0000520    /   C   o   n   t   e   n   t   s   /   R   e   s   o   u   r
    0000540    c   e   s   :  \n   /   U   s   e   r   s   /   p   a   o   /
    0000560    D   o   w   n   l   o   a   d   s   /   /   N   O   M   S    
    0000600    D   .   a   p   p   /   C   o   n   t   e   n   t   s   /   R
    0000620    e   s   o   u   r   c   e   s   /   E   n   g   l   i   s   h
    0000640    .   l   p   r   o   j   :  \n   /   U   s   e   r   s   /   p
    0000660    a   o   /   D   o   w   n   l   o   a   d   s   /   /   N   O
    0000700    M   S       D   .   a   p   p   /   C   o   n   t   e   n   t
    0000720    s   /   R   e   s   o   u   r   c   e   s   /   E   n   g   l
    0000740    i   s   h   .   l   p   r   o   j   /   A   p   p   l   i   c
    0000760    a   t   i   o   n   S   t   u   b   .   n   i   b   :  \n   /
    0001000    U   s   e   r   s   /   p   a   o   /   D   o   w   n   l   o
    0001020    a   d   s   /   /   N   O   M   S       D   .   a   p   p   /
    0001040    C   o   n   t   e   n   t   s   /   R   e   s   o   u   r   c
    0001060    e   s   /   F   r   e   n   c   h   .   l   p   r   o   j   :
    0001100   \n                                                            
    0001101
    Edit 2 : voilà le résultat de mon Mac où j‘ai fait la plupart des tests :

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    0000000    d   r   w   x   -   -   -   -   -   -   @               3    
    0000020    K   A   B           s   t   a   f   f                        
    0000040                1   0   2           4       o   c   t           2
    0000060    0   1   4       H   e   r   o   e   s   -   o   f   -   t   h
    0000100    e   -   S   t   o   r   m   -   S   e   t   u   p   -   f   r
    0000120    F   R   .   a   p   p  \n   d   r   w   x   r   -   x   r   -
    0000140    x   @               3       K   A   B           s   t   a   f
    0000160    f                                       1   0   2       2   3
    0000200        n   o   v           2   0   1   4       P   S   3       M
    0000220    e   d   i   a       S   e   r   v   e   r       S   e   t   u
    0000240    p   .   a   p   p  \n   d   r   w   x   r   -   x   r   -   x
    0000260    @               3       K   A   B           s   t   a   f   f
    0000300                                        1   0   2       1   7    
    0000320    a   v   r           2   0   1   4       S   k   a   l   a    
    0000340    C   o   l   o   r       I   n   s   t   a   l   l   e   r   .
    0000360    a   p   p  \n   d   r   w   x   r   -   x   r   -   x   @    
    0000400            3       K   A   B           s   t   a   f   f        
    0000420                                1   0   2       2   2       j   u
    0000440    l           2   0   1   2       T   e   x   t   M   a   t   e
    0000460    .   a   p   p  \n   d   r   w   x   r   -   x   r   -   x    
    0000500        4       K   A   B           s   t   a   f   f           1
    0000520    3   6       2   8       s   e   p           2   0   1   4    
    0000540    a   p   p   r   e   n   e   z   -   a   -   p   r   o   g   r
    0000560    a   m   m   e   r   -   e   n   -   c  \n   d   r   w   x   r
    0000600    -   x   r   -   x           4       K   A   B           s   t
    0000620    a   f   f           1   3   6       2   8       s   e   p    
    0000640        2   0   1   4       c   r   e   e   z   -   d   e   s   -
    0000660    a   p   p   l   i   c   a   t   i   o   n   s   -   p   o   u
    0000700    r   -   i   p   h   o   n   e   -   i   p   a   d   -   e   t
    0000720    -   i   p   o   d   -   t   o   u   c   h  \n   /   U   s   e
    0000740    r   s   /   K   A   B   /   D   o   w   n   l   o   a   d   s
    0000760    /   /   C   O   U   R   S       O   K   /   a   p   p   r   e
    0001000    n   e   z   -   a   -   p   r   o   g   r   a   m   m   e   r
    0001020    -   e   n   -   c   :  \n   -   r   w   -   r   -   -   r   -
    0001040    -   @       1       K   A   B           s   t   a   f   f    
    0001060            5   6   7   7   5   8   3       2   8       s   e   p
    0001100            2   0   1   4       a   p   p   r   e   n   e   z   -
    0001120    a   -   p   r   o   g   r   a   m   m   e   r   -   e   n   -
    0001140    c   .   e   p   u   b  \n   -   r   w   -   r   -   -   r   -
    0001160    -   @       1       K   A   B           s   t   a   f   f    
    0001200        2   4   6   1   7   5   7   9       2   8       s   e   p
    0001220            2   0   1   4       a   p   p   r   e   n   e   z   -
    0001240    a   -   p   r   o   g   r   a   m   m   e   r   -   e   n   -
    0001260    c   .   p   d   f  \n   /   U   s   e   r   s   /   K   A   B
    0001300    /   D   o   w   n   l   o   a   d   s   /   /   C   O   U   R
    0001320    S       O   K   /   c   r   e   e   z   -   d   e   s   -   a
    0001340    p   p   l   i   c   a   t   i   o   n   s   -   p   o   u   r
    0001360    -   i   p   h   o   n   e   -   i   p   a   d   -   e   t   -
    0001400    i   p   o   d   -   t   o   u   c   h   :  \n                
    0001414
    Ryu

    Edit 3 : sous forme de tableaux pour le résultat de mon Mac, si c'est mieux …
    PS : que fait ce test ?
    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

  6. #26
    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,
    Pour info supplémentaire en plus des tests ci-dessus, je n'ai pas gawk …
    Voilà ma version de awk qui est d'origine dans le terminal de OS X :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    awk -version
    # awk version 20070501
    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. #27
    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
    J'ai remplacé dans ton avant-dernière réponse les tags incorrects "quote" par des tags "code" pour rendre lisible la sortie de la commande "ls ... | od -c". Inutile de convertir cette sortie sous forme de tableau, d'autant plus que cette conversion est incorrecte, ne préservant pas les emplacements des espaces. Le fait que ce ne soit pas gawk mais un awk standard ne devrait pas poser de problème car j'ai évité les GNUismes.

    J'ai fini par comprendre que le répertoire .app pouvait lui-même contenir des sous répertoires. Voici donc mon script modifié pour en tenir compte:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    (
        printf '\xEF\xBB\xBF'
        ls -RF répertoire |
          awk '
          /\.app\/$/{gsub("/$",""); print; next }
          /\/$/ {next}
          /\.app:$/ {i=1}
          /\.app\/.*:$/ {i=1}
          /^$/ {if(i==1) {i=0; next} i=0}
          {if(i!=1) print}
          '
    ) | tee fichier.txt
    ɹǝsn *sıɹɐlos*

  8. #28
    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

    Merci beaucoup jlliagre ça à l'air de bien fonctionner (je regarderai plus en détails chez moi)
    j'ai tout de même de petites questions.

    • On appelle bien un exécutable une application ? Car j'ai des astérix "*" derrière le nom de certains fichiers comme :
    V50F_1.pdf* ou 2.jpg* ou GNU General Public License.txt*, VP_Styles7.ai*, …

    • J'ai eu un résultat bizarre d'un nom d'un élément (surligné en rouge) que je trouve nul part et qui devrait par logique ne pas avoir cet emplacement.
    ça peut venir de quoi ? (cf ci-dessous)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    /Users/pao/Downloads//V50F:
    V50F_1.pdf*
    V50F_2.pdf*
    V50F_3.pdf*
    
    Autoupdate.app
    /Users/pao/Downloads//WBM:
    PAGE TEST TAB PROSPECT W.indd
    Tableau1 Copie.xlsx
    Tableau1.xlsx
    Tableau2.xlsx
    • Si je veux imprimer dans mon fichier le chemin source en 1ère ligne, dois je créer une variable qui me servira pour le print en 1ère ligne et que j’utiliserai pour le répertoire dans ton code?

    Ryu

    Edit : j'ai enlevé le tableau
    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. #29
    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
    • On appelle bien un exécutable une application ? Car j'ai des astérix "*" derrière le nom de certains fichiers comme :
    V50F_1.pdf* ou 2.jpg* ou GNU General Public License.txt*, VP_Styles7.ai*, …
    C'est un problème courant. Les permissions de ces fichiers sont incorrectes sur ton système pour une raison ou une autre (souvent une mauvaise manip).

    Tu peux corriger ça avec la commande:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find dossier -type f -name "*.pdf" \( -o -name "*.jpg" -o -name "*.txt" -o -name "*.ai" \) -exec chmod -x {} +
    • J'ai eu un résultat bizarre d'un nom d'un élément (surligné en rouge) que je trouve nul part et qui devrait par logique ne pas avoir cet emplacement.
    ça peut venir de quoi ? (cf Tab. ci-dessous)
    Evite s'il te plait les tableaux qui n'apportent rien et poste plutôt les extraits d'écran entre tags "code". Où se trouve le dossier "Autoupdate.app" ?

    • Si je veux imprimer dans mon fichier le chemin source en 1ère ligne, dois je créer une variable qui me servira pour le print en 1ère ligne et que j’utiliserai pour le répertoire dans ton code?
    Tu peux créer un script et lui passer le nom du répertoire en paramètre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #!/bin/sh
     
    printf '\xEF\xBB\xBF ==== %s ====' "$1"
    ls -RF "$1" |
    awk '
    /\.app\/$/{gsub("/$",""); print; next }
    /\/$/ {next}
    /\.app:$/ {i=1}
    /\.app\/.*:$/ {i=1}
    /^$/ {if(i==1) {i=0; next} i=0}
    {if(i!=1) print}
    '
    ɹǝsn *sıɹɐlos*

  10. #30
    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
    Concernant "Autoupdate.app", je ne trouve ni fichier, ni dossier correspondant à ce nom; aucune trace dans le dossier scanné.
    Pourtant il se trouve dans le résultat et a une place illogique c'est ca qui est bizarre … ?
    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

  11. #31
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2010
    Messages
    345
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 345
    Points : 539
    Points
    539
    Par défaut
    Bonjour,
    Citation Envoyé par jlliagre Voir le message
    C'est un problème courant. Les permissions de ces fichiers sont incorrectes sur ton système pour une raison ou une autre (souvent une mauvaise manip).
    Je ne suis pas sur.
    Sur OpenBSD, J'ai un alias défini dans .kshrc
    qui me donne une étoile pour les executables.
    man de ls option -F
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
         -F      Display a slash (/) immediately after each pathname that is a
                 directory, an asterisk (*) after each that is executable, an at
                 sign (@) after each symbolic link, an equal sign (‘=’) after
                 each socket, and a vertical bar (|) after each that is a FIFO.
    Cordialement

  12. #32
    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 ctac_ Voir le message
    Je ne suis pas sûr.
    Oui, l'option -F de ls affiche bien une étoile après un fichier que l'on a défini comme exécutable mais moins d'avoir affaire à un étourdi, un farceur ou à un malware qui aurait mis des extensions inappropriées, un fichier *.jpg ou *.pdf n'a aucune raison d'être exécutable. Son exécution se traduira de toute façon par une erreur sauf si l'OS dispose d'un loader spécifique pour lancer une autre commande et je ne pense pas qu'OS X ait implémenté ce type de hack.
    ɹǝsn *sıɹɐlos*

  13. #33
    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
    Concernant "Autoupdate.app", je ne trouve ni fichier, ni dossier correspondant à ce nom; aucune trace dans le dossier scanné.
    Pourtant il se trouve dans le résultat et a une place illogique c'est ca qui est bizarre … ?
    C'est peut-être un fichier transitoire, ou caché par un mécanisme spécifique d'OS X, ou un fichier avec des caractères spéciaux dans le nom...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find répertoire -name "*Autoupdate.app*" -exec printf "[%s]\n" {} +
    ɹǝsn *sıɹɐlos*

  14. #34
    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
    coucou,
    le mystère est résolu, j'ai pu reproduire la même bizarrerie chez moi, qui n'en est plus une grâce à ton code
    En fait, ton code résout à 99,50% le problème car le résultat du test avec ton code ci-dessus montre qu'il a scanné à l'intérieur du dossier/application en .app
    Le résultat parle de lui même :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [/Users/KAB/Downloads//TextMate.app/Contents/SharedSupport/Support/bin/CocoaDialog.app]
    et donc CocoaDialog.app apparaît dans la liste alors qu'il ne le devrait pas

    Comme montré dans mon précédent post :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Autoupdate.app
    /Users/pao/Downloads//WBM:
    PAGE TEST TAB PROSPECT W.indd
    
    En post #6 j'avais signalé un code que j'ai trouvé sur le net qui ne résout pas mon problème (car il donne le chemin de tous les fichiers alors que je veux seulement le chemin du dossier avec la liste des fichiers qu'il contient),
    mais qui m'a permis de faire un test, excluant tout ce qui se trouve à l'intérieur des dossiers/applications .app (ne pas hésiter à me reprendre si j'ai pas écris le code correctement ):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ls -R Repertoire | awk '/:$/&&f{s=$0;f=0}
    /:$/&&!f{sub(/:$/,"");s=$0;f=1;next}
    NF&&f{ print s"/"$0 }' | egrep -v .+/Contents.+$ > Fichier.txt
    Comme ceci on a plus rien venant des dossiers en .app
    Y a t-il moyen à partir de ce code de faire une amélioration pour une exclusion totale des sous répertoires/fichiers des .app ?

    En tout cas et très grand

    Ryu

    PS : il faut que je cherche comment exploité ton code pour passer le répertoire en paramètre (pas encore fait)
    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

  15. #35
    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
    coucou,
    le mystère est résolu, j'ai pu reproduire la même bizarrerie chez moi, qui n'en est plus une grâce à ton code
    En fait, ton code résout à 99,50% le problème car le résultat du test avec ton code ci-dessus montre qu'il a scanné à l'intérieur du dossier/application en .app
    Le résultat parle de lui même :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [/Users/KAB/Downloads//TextMate.app/Contents/SharedSupport/Support/bin/CocoaDialog.app]
    et donc CocoaDialog.app apparaît dans la liste alors qu'il ne le devrait pas
    Essaie ce script où je n'affiche pas les .app qui sont dans des .app... :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #!/bin/sh
     
    printf '\xEF\xBB\xBF ==== %s ====' "$1"
    ls -RF "$1" |
    awk '
    /\.app\/$/{gsub("/$",""); if(i!=1) print; next }
    /\/$/ {next}
    /\.app:$/ {i=1}
    /\.app\/.*:$/ {i=1}
    /^$/ {if(i==1) {i=0; next} i=0}
    {if(i!=1) print}
    '

    En post #6 j'avais signalé un code que j'ai trouvé sur le net qui ne résout pas mon problème (car il donne le chemin de tous les fichiers alors que je veux seulement le chemin du dossier avec la liste des fichiers qu'il contient),
    mais qui m'a permis de faire un test, excluant tout ce qui se trouve à l'intérieur des dossiers/applications .app (ne pas hésiter à me reprendre si j'ai pas écris le code correctement ):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ls -R Repertoire | awk '/:$/&&f{s=$0;f=0}
    /:$/&&!f{sub(/:$/,"");s=$0;f=1;next}
    NF&&f{ print s"/"$0 }' | egrep -v .+/Contents.+$ > Fichier.txt
    Comme ceci on a plus rien venant des dossiers en .app
    Y a t-il moyen à partir de ce code de faire une amélioration pour une exclusion totale des sous répertoires/fichiers des .app ?

    Ce code n'exclut pas les .app mais les répertoires dont le nom commence par Contents.

    PS : il faut que je cherche comment exploité ton code pour passer le répertoire en paramètre (pas encore fait)
    C'est à dire ? Mon script accepte déjà un nom de répertoire passé en paramètre (c'est le $1).
    ɹǝsn *sıɹɐlos*

  16. #36
    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
    Citation Envoyé par jlliagre Voir le message
    C'est à dire ? Mon script accepte déjà un nom de répertoire passé en paramètre (c'est le $1).
    En fait comme tout est nouveau pour moi je ne suis pas encore assez familiarisé avec l'écriture (par déduction j'arrive à voir parfois ce qui peut se passer dans un code) mais je suis loin de la maitrise.
    Le Grep j'en ai fait seulement dans InDesign (Logiciel Adobe de Mise en page) et j'ai donc quelques notions.
    donc il faut que je trouve où insérer mon chemin source sachant qu'il faut le faire correspondre à $1
    se sera plus simple qd je commencerai vraiment à m'y habitué (à la base je suis pas programmeur et se former soit même demande pas mal de temps avec tous les à cotés à gérer)
    Mais je vais trouvé à force de chercher - tu as déjà fait beaucoup et je t'en remercie grandement

    OK j'ai trouvé, en dessous de #!/bin/sh :
    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. #37
    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
    Là tu ne passe pas le nom du répertoire en paramètre, tu remplace le paramètre passé par celui mis en dur dans le script. D'autre part, c'est `set` avec un `s` minuscule.

    Passer un nom en paramètre, ça se fait en shell:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ monscript.sh répertoire
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ monscript "répertoire dont le nom/chemin contient des espaces"
    ɹǝsn *sıɹɐlos*

  18. #38
    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,

    Tu as bien fait de me reprendre merci

    Dans cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf '\xEF\xBB\xBF ==== %s ====' "$1"
    $1 doit bien renvoyer le répertoire source sur la 1ère ligne du fichier ?? Quand un fichier lui est indiqué …
    J'ai voulu essayé d'envoyer en 1ère ligne via sed dans mon fichier le répertoire puis toto, je n'ai pas du tout réussi à le faire comme si sur Mac il y avait un problème avec cette commande, et j'en ai écumé des sites…
    Je dois sûrement mal m'y prendre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i '1i/montexte/' monfichier.txt
    Mais ça ne marche pas, j'ai essayé de l'écrire de différentes manières, sans résultat.

    PS : quand je suis sur les trajets entre home / taf comme en ce moment, j'écris depuis mon téléphone, donc il se peut que je fasse des fautes …

    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. #39
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf '\xEF\xBB\xBF ==== %s ====' "$1"
    $1 doit bien renvoyer le répertoire source sur la 1ère ligne du fichier ?? Quand un fichier lui est indiqué …
    Oui, cette ligne affiche le nom du premier argument passé à la commande en paramètre, entouré de "====".

    J'ai voulu essayé d'envoyer en 1ère ligne via sed dans mon fichier le répertoire puis toto, je n'ai pas du tout réussi à le faire comme si sur Mac il y avait un problème avec cette commande, et j'en ai écumé des sites…
    Je dois sûrement mal m'y prendre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i '1i/montexte/' monfichier.txt
    Mais ça ne marche pas, j'ai essayé de l'écrire de différentes manières, sans résultat.
    Y-a-t-il un message d'erreur ? L'option "-i" de la commande sed est un GNUisme.

    Attention, si tu insères quelque chose au début du fichier, tu vas inhiber le marqueur UTF-8 et te retrouver avec le problème d'encodage évoqué au début.

    La dernière version du script que j'ai envoyé fait-elle ce que tu veux ?
    ɹǝsn *sıɹɐlos*

  20. #40
    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,

    aujourd'hui trop overbooké pour répondre, là je je viens juste de m'y remettre … (je repasse un peu plus tard avec un Edit)

    Edit : pour commencer j'ai voulu utiliser ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /Users/KAB/Downloads/ -type f -name "*.pdf" \( -o -name "*.jpg" -o -name "*.txt" -o -name "*.ai" \) -exec chmod -x {} +
    afin de corriger les permissions comme suggéré mais j'ai eu le message d'erreur suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find: -o: no expression before -o

    Concernant sed j'ai essayé de rajouter une 1ère ligne le fichier étant déjà créé. En autre j'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sed -i '1i/montexte/' fichier.txt
    sed: 1: "fichier.txt": invalid command code f # message d'erreur
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sed -i " " '1i/montexte/' fichier.txt
    sed: 1: "1i/montexte/": command i expects \ followed by text # message d'erreur
    Attention, si tu insères quelque chose au début du fichier, tu vas inhiber le marqueur UTF-8 et te retrouver avec le problème d'encodage évoqué au début.
    Le fait que cela soit un marqueur, ne veut pas dire que le fichier est encodé en dur en UTF-8 ? Une fois que le fichier est encodé en UTF-8, si par la suite on utilise un sed pour ajouter une ligne en 1ère ligne, cela peut modifier l'encodage ?


    La dernière version du script que j'ai envoyé fait-elle ce que tu veux ?
    Je pense que oui, mais le problème, même en lisant une multitude de site dont celui-ci, je ne parvient pas l'utiliser correctement avec le répertoire en passage de paramètre;
    j'ai beau essayé différentes écriture je fais chou blanc, comme par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #!/bin/sh 
    $ monscript.sh /Users/KAB/Downloads/
    printf '\xEF\xBB\xBF ==== %s ====' "$1"
    ls -RF "$1" |
    awk '
    /\.app\/$/{gsub("/$",""); if(i!=1) print; next }
    /\/$/ {next}
    /\.app:$/ {i=1}
    /\.app\/.*:$/ {i=1}
    /^$/ {if(i==1) {i=0; next} i=0}
    {if(i!=1) print}
    ' > Fichier.txt
    code erreur à chaque fois qq soit l'écriture que j'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ls: fts_open: No such file or directory
    En lisant pas mal je commence à mieux comprendre certaines choses, mais pour le moment ce n'est pas encore suffisant

    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 2 sur 3 PremièrePremière 123 DernièreDernière

Discussions similaires

  1. Réponses: 0
    Dernier message: 14/11/2014, 15h18
  2. Réponses: 1
    Dernier message: 14/10/2011, 15h33
  3. Problème avec FTP et liste de fichiers
    Par Xphil dans le forum Langage
    Réponses: 14
    Dernier message: 14/04/2010, 18h31
  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, 15h58
  5. liste fichiers (TListView) avec icones
    Par pjb dans le forum C++Builder
    Réponses: 2
    Dernier message: 01/07/2005, 09h06

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