Shell - test: fichier ou répertoire ? [Résolu/Fermé]

Signaler
Messages postés
44
Date d'inscription
mercredi 8 septembre 2004
Statut
Membre
Dernière intervention
24 mai 2008
-
 Je pense donc je suis. -
Hello,

Un petit problème. Je souhaiterias tester si un chemin+fichier est un fichier ou un répertoire.
Effectivement le test -d permet de dire s'il s'agit d'un répertoire. Mais seulement un répertoire existant !!

Je voudrais savoir s'il s'agit d'un répertoire ou d'un fichier, qu'il existe ou non.........

Merciiiiiiiiiiiiiiiiiiiiiiii

A+

5 réponses

Messages postés
29255
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
8 juillet 2020
6 885
Tu as un autre test pour l'existence.
#!/bin/bash
# script plop.sh

if [ ! -e "$1" ]; then
	echo "$1 n'existe pas"
elif [ -f "$1" ]; then
	echo "$1 est un fichier"
elif [ -d "$1" ]; then
	echo "$1 est un repertoire"
fi

Ce qui donne par exemple
(mando@polgara) (~) $ ls -l
total 20
drwx------ 2 mando mando 4096 2007-03-24 12:49 Desktop
-rw-r--r-- 1 mando mando 2351 2007-04-04 22:04 plop.cpp
-rwxr-xr-x 1 mando mando  165 2007-04-04 22:45 plop.sh
drwxr-xr-x 2 mando mando 4096 2007-03-24 13:09 themes
(mando@polgara) (~) $ ./plop.sh plop.cpp
plop.cpp est un fichier
(mando@polgara) (~) $ ./plop.sh Desktop
Desktop est un repertoire
(mando@polgara) (~) $ ./plop.sh dieu
dieu n'existe pas

Bonne chance
54
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 61162 internautes nous ont dit merci ce mois-ci


Super c'est ce que je cherchais merci !!

Au passage : oui, forcément que "dieu" n'existe pas. C'est "Dieu" qui existe.
Messages postés
29255
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
8 juillet 2020
6 885
:-)
Ou alors, dieu existe car justement Dieu n'existe pas...
Une chose est sure, Albert: tu es hors-sujet, et tu ne t'es pas auto-créé.
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
5 décembre 2019
4 743
Re-
#! /bin/bash

while read line
do
basename "$line" | grep '\.' 1>/dev/null
retval="$?"
if [ "$retval" = "0" ]
then
echo -e "C'est bon pour :\c"
basename $line
else
echo -e "C'est pas bon pour :\c"
basename $line
fi
done < <(find /chemin/vers/rep/ -type f -print)
;-)
Messages postés
44
Date d'inscription
mercredi 8 septembre 2004
Statut
Membre
Dernière intervention
24 mai 2008
1
Merci.
Mais j'ai du mal m'expliquer :

pour c:/Folder1 je voudrais que le script me dise qu'il s'agit d'un répertoire qu'il existe ou non dans la réalité je m'en fous.

pour c:/Folder1/fichier.txt je voudrais que le script me dise qu'il s'agit d'un fichier qu'il existe ou non dans la réalité je m'en fous.

en gros je pense qu'il faudrait détecter l'extension................

Merci

A+
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
5 décembre 2019
4 743
Salut,

Ce que tu dis n'a pas de sens ! On ne peut pas déterminer le type d'un fichier si celui-ci n'existe pas !!!
De plus sous GNU/Linux les extensions ne servent à rien.
[jp@MDK tmpfs]$ mkdir repertoire folder.txt file.jpg

[jp@MDK tmpfs]$ ls -l
total 0
drwxrwxr-x  2 jp jp 40 avr  5 08:59 file.jpg/
drwxrwxr-x  2 jp jp 40 avr  5 08:59 folder.txt/
drwxrwxr-x  2 jp jp 40 avr  5 08:59 repertoire/

[jp@MDK tmpfs]$ touch fichier.txt document un.fichier.avec.extension.saugrenue

[jp@MDK tmpfs]$ ls -l
total 0
-rw-rw-r--  1 jp jp  0 avr  5 09:01 document
-rw-rw-r--  1 jp jp  0 avr  5 09:01 fichier.txt
drwxrwxr-x  2 jp jp 40 avr  5 08:59 file.jpg/
drwxrwxr-x  2 jp jp 40 avr  5 08:59 folder.txt/
drwxrwxr-x  2 jp jp 40 avr  5 08:59 repertoire/
-rw-rw-r--  1 jp jp  0 avr  5 09:01 un.fichier.avec.extension.saugrenue

[jp@MDK tmpfs]$ file *
document:                            ASCII text
fichier.txt:                         empty
file.jpg:                            directory
folder.txt:                          directory
repertoire:                          directory
un.fichier.avec.extension.saugrenue: ASCII text

[jp@MDK tmpfs]$
;-))
Messages postés
44
Date d'inscription
mercredi 8 septembre 2004
Statut
Membre
Dernière intervention
24 mai 2008
1
Yo !!

Et merci. Exact.

Excusez du retard mais j'ai changé de provider Internet...ils ont eu un peu de mal.

En fait mon véritable problème est de détecter qu'il y a bien une extension ou plutôt un "." dans la dernière partie de l'arborescence.
Autrement dit je voudrais un script qui me fournisse un booleen qui me dise si oui ou non il y a une extension.

Ex:

C:/Folder.txt/Folder => le script me retourne FALSE
C:/Folder/Folder.txt => le script me retourne TRUE

J'espère que je suis clair
THANKSSSSSSSSSS à tous
++
Messages postés
44
Date d'inscription
mercredi 8 septembre 2004
Statut
Membre
Dernière intervention
24 mai 2008
1
Merci Jipicy pour la nème fois que tu m'aides.

T'es le boss des patrons.
Je serais curieux de savoir si tu es plutôt du genre petit jeune de 17 ans savant passant des heures devant son PC depuis l'âge de 6 ans ou plutôt professionnel informaticien mur.

A+
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
5 décembre 2019
4 743
;-)

Ni l'un ni l'autre... voir profil

Le pingouin j'y suis tombé dessus y'a 5 ans et depuis je ne le lache plus ;-))