verifier la presence d'un fichier dans une arborescence

Publié : 12.05.2004 - 10h44 par incandescence_on _mac

J’ai une arborescence du type :

Projet
Media
Vidéo
Rush
Render

Avec 120 projets…

J’aimerais avoir une solution simple qui me permette de récupérer une liste qui vérifie la présence d’un fichier.mov dans le dossier « render » de tous les projets.

Evidament mon arborescence contient d’autres types de media (print, Web, Etc…) dont j’aimerais aussi avoir l’information.

J’ai essayé de trouver une solution avec File maker et director mais je ne suis pas sûr d’utiliser les bons softs.

(':wink:') Merci pour vos lumières


Publié : 12.05.2004 - 11h05 par Prunelle

Peut-etre que simplement un terminal fera l'affaire. Si les repertoires Media, Video, Rush et Render ont les memes noms dans chaque projet, alors une commande du type:

ls [chemin jusqu'au rep des projets]/*/Media/Video/Rush/Render/*.mov

va te lister tout les .mov qu'il y a dans ces repertoires...


Publié : 12.05.2004 - 11h26 par incandescence_on _mac

LS ne tient pas compte du second * donc il me liste que les projets...

mais je regarde ce que je peux faire avec le terminal...


Publié : 14.05.2004 - 8h24 par Fabien

Donc, soit "/Chemin/" le dossier contenant le dossier projet.

Attention je pars du principe que tu es sous Panther avec un shell bash. Si tu es sous Jaguar (et donc un shell tcsh) fais-moi signe et je modifie les commandes.

Voici une suite de commande. Le "machin$" représente "l'invite de commande", tu ne dois donc pas l'écrire. Les ">" non plus, ils viennent automatiquement.

Code : Tout sélectionner

machin$ cd /Chemin
machin$ for i in `ls`
> do
> ls $i/Media/Video/Rush/Render/*.mov
> done


si tu veux sauver tout ça dans un fichier texte sur le bureau (appelons-le "output.txt") tu remplaces la ligne ls avec:

Code : Tout sélectionner

ls $i/Media/Video/Rush/Render/*.mov >> ~/Desktop/output.txt


Le seul problème c'est que si tu fais plusieurs fois cette suite de commandes, le fichier output ne sera pas remplacé. Améliorons donc tout ça:

Code : Tout sélectionner

machin$ cd /Chemin
machin$ rm ~/Desktop/output.txt
machin$ for i in `ls`
> do
> ls $i/Media/Video/Rush/Render/*.mov
> done


Et voilà.

Maintenant j'imagine que tu n'as pas envie de taper tout ça à chaque fois. Nous allons donc faire un script.

Il faut donc créer un fichier texte (avec l'éditeur que tu veux) et entrer ceci:

Code : Tout sélectionner

#!/bin/bash

for i in `ls /Chemin`
do
    ls /Chemin/$i/Media/Video/Rush/Render/*.mov
done


sauve le fichier, appelons-le "renderlist". Il faut lui donner les droits d'execution, donc:

Code : Tout sélectionner

machin$ chmod a+x renderlist


ensuite pour appeler la commande, il faut se placer dans le répertoire dans lequel se trouve le fichier renderlist (ou l'ajouter au path) et entrer:

Code : Tout sélectionner

./renderlist


pour sauver la sortie dans un fichier:

Code : Tout sélectionner

./renderlist >~/Desktop/output.txt


Dans ce cas, le fichier output sera remplacé à chaque fois.

Si tu veux plus de précisions et d'explication, fais-moi signe.


Publié : 16.05.2004 - 17h21 par pattes

Tu veux un log de tous tes fichiers .mov c'est ça ? Si je me résume tu peux aussi utiliser PathFinder... C'est un logiciel payant.... Mais c'est une solution.... :idea: Comme une autre...


Publié : 16.05.2004 - 21h17 par Fabien

pattes a écrit :Tu veux un log de tous tes fichiers .mov c'est ça ?


pas tout à fait, je crois qu'il veut uniquement ceux qui se trouve dans une arborescence donnée.


Publié : 17.05.2004 - 10h01 par incandescence_on _mac

hello, je teste ça de suite.

et oui c'est bien uniquement ceux qui se trouve dans une arborescence donnée. mais la seul infos qui m'interresse c'est l'abscence du fichier.


Publié : 17.05.2004 - 10h12 par Fabien

Alors tu sauves le script que je te donne et tu l'utilises avec grep:

Code : Tout sélectionner

machin$ ./renderlist | grep existe-t-il.mov


si rien ne sort, c'est que le fichier "existe-t-il.mov" n'existe pas.


Publié : 17.05.2004 - 11h10 par incandescence_on _mac

c'est bon je pense que je vais m'en sortir, et regarder plus attentivement ce que peut faire le terminal

Merci a tous