Chercher un fichier

bonjour à tous !! depuis je m'interesse à linux et ses commandes (on l'utilise en cours) j'aurai besoiunn d'une commande qui recherche un fichier mais surtout qui me dise si ce fichier est un dossier ou autre.. j'utilise "printf" pour rechercher le fichier et "ls" pour savoir si c'est un fichier ou un repertoire.
la comnande doit etre une syntaxe unique : rechercher un fichier et afficher si le fichier trouvé est un dossier ou un fichier ! qu'en pensez vous ?

9 réponses

  1. Contributeur
    salut,

    tu as "find" ....

    find . -name "foo.bar"
    va chercher, à partir du dossier courant (.) tous fichiers/dossiers nommés foo.bar
    tu peux aussi spécifier le type si tu ne souhaites que les dossier...
    find . -type d -name "FOO*"
    va chercher tous les dossier (-type d) a partir de l'emplacement courant (.) dont le nom commence par FOO ("FOO*")

    il y a plein d'autres options...

    man find

    Phiphi
    0
    1. Modérateur
      Salut,

      tu peux aussi essayer ça
      i=aaa;if [ -d $(find ./ -name $i) ];then echo $i répertoire;else echo $i fichier;fi


      1. dans i (voir en gras) tu mets le nom du fichier ou répertoire

      2. si répertoire la commande va afficher aaa répertoire sinon va afficher aaa fichier

      lami20j
      0
      1. bonjour et merci pour vos reponses !!!
        en fait j'utilise la commande find pour ca pas de pb...
        find \ -name toto* et il m'affiche le chemin des repertoires et/ou des fichiers toto trouvés. le truc c'est que j'aimerai rajouté a cette commande avec un pipe ou une redirection une autre commande (sans C) qui me dise si le fichier trouvé est un repertoire ou simplement un fichier !!! j'espere que ma demande n'est pas trop incomprehensible (lol)

        merci a tous !!
        0
        1. Contributeur
          salut,

          ce que propose lami20j n'est pas du "C"... c'est simplement du bash je pense (c'est a dire la ligne de commande...)
          c'est a mon avis le plus ce qui correspond le mieux a ce que tu cherches a faire...

          Phiphi
          0
          1. Modérateur
            Salut Phiphi57,

            oui c'est du bash pas du C.

            lami20j
            0
        2. Modérateur
          Re,

          voilà une ligne qui n'utilise que des commandes Linux est pas des tests bash (enfin c'est toujours du bash ;-))
          i=$(find ./ -name 'fichier');test -f $i && echo fichier;test -d $i && echo répertoire
          

          lami20j
          0
          1. merci pour vos reponses aussi rapides !! je vais tester ca pour voir !!
            merci ++
            0
            1. Modérateur
              Salut,
              [jp@MDK tmpfs]$ ls -l
              
              total 8
              drwxr-xr-x  2 jp jp 40 nov  4 10:22 tata/
              -rw-r--r--  1 jp jp  8 nov  4 13:35 tota.txt
              -rw-r--r--  1 jp jp  8 nov  4 13:36 toto.txt
              drwxr-xr-x  2 jp jp 40 nov  4 10:23 totu/
              
              [jp@MDK tmpfs]$ file $(find . -name "tot*")
              
              ./totu:     directory
              ./tota.txt: ASCII text
              ./toto.txt: ASCII text
              
              [jp@MDK tmpfs]$
              ;-))
              0
              1. merci pour cette reponse !!
                en fait j'utilise la commande find donc.. pour ca pas de pb. Cependant il faut que je rajoute a cette commande une autre qui me dise si le fichier trouvé est un repertoire ou un fichier comme avec la commande ls -l.

                la commande sera :
                find \ -name toto* et apres derriere je dois certainement rajouté un pipe ou une redirection pour pouvoir ajouter la commande suivante qui m'indiquera si le fichier trouvé sera un repertoire ou un fichier

                merci pour vos reponses
                0
                1. Modérateur
                  Re-

                  lami20j t'a déjà donné une solution au post #6 !
                  L'as-tu essayée ?

                  Tu peux aussi essayer ça :
                  [ -f $(find . -name fichier) ] && echo "Fichier" || echo "Répertoire"
                  ;-)
                  0

                  Discussions similaires

                  question pix mot caché

                  7 réponses