Rechercher : dans
Par :

Shell - test: fichier ou répertoire ?

Dernière réponse le 23 avr 2007 à 15:14:29 jax54000, le 4 avr 2007 à 22:39:21 
 Signaler ce message aux modérateurs

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+

Configuration: Windows XP
Internet Explorer 6.0

Meilleures réponses pour « Shell test: fichier ou répertoire ? » dans :
[Shell] Tester une variable numérique VoirTester une variable numérique    Préambule Dans un environnement "shell", les variables sont, par défaut, de type "chaîne de caractères". De ce fait il n'est pas possible de déclarer une variable de type "entier" (enfin, ceci n'est pas tout à...
[MS-Dos] Lister le contenu d'un répertoire dans un fichier VoirIl peut s'avérer pratique d'effectuer le listage d'un ou plusieurs répertoires dans un fichier, afin de tenir par exemple un catalogue de fichiers. Sous MS-Dos (ou sous Windows en ouvrant une fenêtre d'invite de commande MS-Dos) il est possible...

1

mamiemando, le 4 avr 2007 à 22:47:35

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

Répondre à mamiemando

2

jax54000, le 5 avr 2007 à 08:13:50

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+

Répondre à jax54000

3

jipicy, le 5 avr 2007 à 09:12:24

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]$
;-))
Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.

Répondre à jipicy

4

jax54000, le 14 avr 2007 à 20:37:09

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
++

Répondre à jax54000

5

jipicy, le 14 avr 2007 à 22:09:58

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)
;-)
Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.

Répondre à jipicy

6

jax54000, le 21 avr 2007 à 19:18:46

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+

Répondre à jax54000

7

 jipicy, le 21 avr 2007 à 19:26:31

;-)

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 ;-))
Z'@+...che.

JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.

Répondre à jipicy