Les Allergies
Alimentaires
Posez votre question Signaler

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

jax54000 28Messages postés 23 mars 2007Date d'inscription - Dernière réponse le 6 janv. 2012 à 01:12
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+
Lire la suite 

Shell - test: fichier ou répertoire »

9 réponses
Réponse
+25
moins plus
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
ubuntu&co - 5 janv. 2012 à 13:33
Super c'est ce que je cherchais merci !!

Au passage : oui, forcément que "dieu" n'existe pas. C'est "Dieu" qui existe.
mamiemando- 6 janv. 2012 à 01:12
:-)
Ajouter un commentaire
Réponse
+3
moins plus
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)
;-)
Ajouter un commentaire
Réponse
+0
moins plus
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+
jipicy- 5 avril 2007 à 09:12
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]$
;-))
Ajouter un commentaire
Réponse
+0
moins plus
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
++
Ajouter un commentaire
Réponse
+0
moins plus
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+
jipicy- 21 avril 2007 à 19:26
;-)

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 ;-))
Ajouter un commentaire
Ce document intitulé « Shell - test: fichier ou répertoire ? » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?