Chercher un fichier

bld -  
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   -
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 ?
A voir également:

9 réponses

Phiphi57 Messages postés 789 Date d'inscription   Statut Contributeur Dernière intervention   295
 
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
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
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
bld
 
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
Phiphi57 Messages postés 789 Date d'inscription   Statut Contributeur Dernière intervention   295
 
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
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut Phiphi57,

oui c'est du bash pas du C.

lami20j
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
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
bld
 
merci pour vos reponses aussi rapides !! je vais tester ca pour voir !!
merci ++
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
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
bld
 
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
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
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