Commande find criteres et affichage

Bonjour, je suis en pleine apprentissage des bases de linux, et on me pose comme problemme de trouver LA commande qui affiche une liste d'un repertoire dont les noms debutent par 'c' et ne finissent PAS par 'c, f ou y'. Il faut afficher uniquement la liste de ces fichiers separer par des virgules et en fonction de la date de modification des fichiers, du plus recent au moin recent.

J'ai tenter plusieurs fois d'y arriver et je me suis rendu la :
find /etc -type f -name c*[!cfy]

Enssuite pour afficher j'ai essayer :
find /etc -type f -name c*[!cfy] -exec ls -m {} \;

Je trouve toujours pas comment faire.

2 réponses

  1. Modérateur
    Je n'avais pas tout lu. Je continue mes tests !
    johand@bata:~/tmp$ find .  -maxdepth 1 -type f  | sort
    ./01 - King Crimson - Red.mp3
    ./.bashrc
    ./bigben.wav
    ./bon-december.pdf
    ./brol.sh
    ./brol.tar
    ./brol.tar.gz
    ./calibre-bin_2.5.0+dfsg-1_amd64.deb
    ./coder.php.html
    ./data.txt
    ./data.txt~
    ./Esso_logo.eps
    ./Esso_logo.pdf
    ./FN.db
    ./heller.url
    ./hostname
    ./hostname.c
    ./index.php
    ./index.rar
    ./moyenne.c~
    ./Raspberry Pi Cookbook.pdf
    ./SWIGDocumentation.pdf
    ./tar.config
    ./telephone.pdf
    ./test_config.py
    ./test_config.pyc
    ./testnl.py
    ./test.sh
    ./test.sh~
    ./test.wav
    ./titieee
    ./Total_Distro_Toolkit.iso
    johand@bata:~/tmp$ find . -maxdepth 1 -type f -name '[tE]*[!fy]' -printf "%P," | sed -e 's/,$/\n/'
    test.sh~,test.sh,titieee,tar.config,test_config.pyc,Esso_logo.eps,test.wav


    Je regarderai le problème du tri plus tard car je dois quitter mon poste.

    ATTENTION cependant aux objets dont le nom contient une virgule.
    johand@bata:~/tmp$ find .  -maxdepth 1 -type f -name '[tE]*[!fy]' -printf "%P," | sed -e 's/,$/\n/'
    test.sh~,test.sh,titieee,trèsy, très mauvais nom,tar.config,test_config.pyc,Esso_logo.eps,test.wav


    Il vaut mieux séparer les noms par le caracère NULL (0x00). De nombreux utilitaires GNU per mettent de spécifier ce séparateur: xargs, sort, shuf...
    L'option '-print0' de find est destinée à cet effet.
    A VERIFIER: sous UNIX les seuls caractères interdits sont 0x00 et '/'
    Gates gave ^W  sold  you the windows.
    GNU gave us the whole house.(Alexandrin)
    1. Merci sa fonctionne, mais je ne comprend pas cette partie de la commande :
      sed -e 's/,$/\n/'
  2. Contributeur
    Salut,

    Et pourquoi pas tout simplement
    ls -tm c*[!cfy]
    ?
    1. je veux chercher l'information dans un dossier precis, sans y etre