Chercher un fichier

Fermé
bld - 3 nov. 2006 à 22:10
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 5 nov. 2006 à 11:47
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 samedi 26 février 2005 Statut Contributeur Dernière intervention 19 juillet 2009 295
4 nov. 2006 à 09:10
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 jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
4 nov. 2006 à 09:21
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
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 samedi 26 février 2005 Statut Contributeur Dernière intervention 19 juillet 2009 295
4 nov. 2006 à 10:36
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 jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
4 nov. 2006 à 10:39
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 jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
4 nov. 2006 à 11:04
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
merci pour vos reponses aussi rapides !! je vais tester ca pour voir !!
merci ++
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 896
4 nov. 2006 à 13:40
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
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 jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 896
5 nov. 2006 à 11:47
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