Gestion fichiers sous unix
jossly
-
batmat Messages postés 1871 Statut Membre -
batmat Messages postés 1871 Statut Membre -
bonjour à tout le monde.
j'essaye de creer un script sous avec les commandes du c-shell unix pour visionner sur ecran tous les fichiers contenus dans mon reperoire et ses sous repertoires . mais le script m'affiche les fichiers de mon repertoire et pas ceux de ses sous repertoire. Qui peut me donner une idée ?
voici le script :
if ( ! -d $argv[1]) then
echo le parametre doit etre un repertoire
exit (0)
else if ( -d $argv[1]) then
cd $argv[1]
set tab=(`\ls -iR `)
set indice=2
while ($indice <= $#tab)
# parcour de tab qui conient le resultat de `ls -iR`
if ( -f $tab[$indice]) then
# on affiche le inoeud et le fichier correspondant
echo $tab[$indice-1] $tab[$indice]
else if ( -d $tab[$indice]) then
echo repertoire: $tab[$indice]
endif
@ indice++
end
endif
il ya une erreur mais je ne sais pas à quel endroit.
Merci de votre réaction.
jossly
j'essaye de creer un script sous avec les commandes du c-shell unix pour visionner sur ecran tous les fichiers contenus dans mon reperoire et ses sous repertoires . mais le script m'affiche les fichiers de mon repertoire et pas ceux de ses sous repertoire. Qui peut me donner une idée ?
voici le script :
if ( ! -d $argv[1]) then
echo le parametre doit etre un repertoire
exit (0)
else if ( -d $argv[1]) then
cd $argv[1]
set tab=(`\ls -iR `)
set indice=2
while ($indice <= $#tab)
# parcour de tab qui conient le resultat de `ls -iR`
if ( -f $tab[$indice]) then
# on affiche le inoeud et le fichier correspondant
echo $tab[$indice-1] $tab[$indice]
else if ( -d $tab[$indice]) then
echo repertoire: $tab[$indice]
endif
@ indice++
end
endif
il ya une erreur mais je ne sais pas à quel endroit.
Merci de votre réaction.
jossly
A voir également:
- Gestion fichiers sous unix
- Gestion de fichiers - Télécharger - Gestion de fichiers
- Renommer des fichiers en masse - Guide
- Logiciel gestion photo gratuit - Guide
- Logiciel gestion locative gratuit excel - Télécharger - Comptabilité & Facturation
- Fichiers epub - Guide
8 réponses
Je dis peut etre une connerie, mais pourquoi un script et pas un simple:
ls -R
?
. .
\_/
ls -R
?
. .
\_/
jossly
voila, en fait je la finalité du script est que apres je devrai effacer les fichiers synonymes dans tout l'arborecsence du repertoire. c'est -à -dire ceux qui ont le meme numero de inoeud. c'est pourqoi, je tente d'abord d'isoler les fichiers leguliers et leur inoeud en utilisant la commande ls ...
je peux dire une connerie ? :o)
manquerais pas des accollades pour le while dés fois ?
ou alors un endif vu que c'est un esle if et non un elif ?
++
Na kaer eo va Breizh,
gand ar mor glaz èn-dro dezi !
manquerais pas des accollades pour le while dés fois ?
ou alors un endif vu que c'est un esle if et non un elif ?
++
Na kaer eo va Breizh,
gand ar mor glaz èn-dro dezi !
mouais ...
Je viens de tester le script...
ca ne marche pas pour la meme raison que tu a mis ton indice a 2 :)
dans la sortie de ls -iR tu a:
0 .:
1 total 1254
2 fichier...
3 fichier...
4 fichier...
5 rep machin...
6
7 ./machin:
8 total 5234
...
sans les numeros de lignes :)
au changement de repertoire tu a 3 ligne qui ne colle pas avec ton prog :o) (ici 6 7 8)
essaye de traiter la sortie avec sed ou awk avant de la mettre dans tab :)
Na kaer eo va Breizh,
gand ar mor glaz èn-dro dezi !
Je viens de tester le script...
ca ne marche pas pour la meme raison que tu a mis ton indice a 2 :)
dans la sortie de ls -iR tu a:
0 .:
1 total 1254
2 fichier...
3 fichier...
4 fichier...
5 rep machin...
6
7 ./machin:
8 total 5234
...
sans les numeros de lignes :)
au changement de repertoire tu a 3 ligne qui ne colle pas avec ton prog :o) (ici 6 7 8)
essaye de traiter la sortie avec sed ou awk avant de la mettre dans tab :)
Na kaer eo va Breizh,
gand ar mor glaz èn-dro dezi !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Sorry,
deux lignes seulement puis que c'est ls et non ls -l :-P
Na kaer eo va Breizh,
gand ar mor glaz èn-dro dezi !
deux lignes seulement puis que c'est ls et non ls -l :-P
Na kaer eo va Breizh,
gand ar mor glaz èn-dro dezi !
Le problème est que dans le script qd tu teste un dir. "if ( -d "$tab[$indice]")" tu reste ds le dir. courant donc qd tu testes le fichier suivant "if ( -f "$tab[$indice]") then" retourne faux car ce fichier est ds un sous-dir. OK?
Une solution est de ce déplacer ds les sous-dir. mais tab doit alors contenir les ".." pour pouvoir remonter.
Une solution est de ce déplacer ds les sous-dir. mais tab doit alors contenir les ".." pour pouvoir remonter.
le déplacement dans les sou-s rep, se devrais se faire recurssivement dans `ls -iR`, à mon avis, et l'indoce commence à deux porce que le nom du premier fichier rencotré doit se trouver en position 2 et son inoeud en postion 1. Peut être je me trompe.
Qu'en penses vous?
Mercie de votre réaction.
Jossly
Qu'en penses vous?
Mercie de votre réaction.
Jossly
Est-ce que tu as un message d'erreur quelquonque ? si oui que dit-il ?
Est tu sur que la sortie de ton ls -iR ne renvoie aucune ligne blanche ?
(teste sur une console ls -1iR )
@++
Na kaer eo va Breizh,
gand ar mor glaz èn-dro dezi !
Est tu sur que la sortie de ton ls -iR ne renvoie aucune ligne blanche ?
(teste sur une console ls -1iR )
@++
Na kaer eo va Breizh,
gand ar mor glaz èn-dro dezi !
Moi je ferais pas comme ça...
Je commencerais par un "find ." qui te donnera tous les fichiers ... Ensuite, c'est facile de faire un ls -l sur chacun,
un tr -s ' ' pour simplifier les espaces
un cut -d' ' -f"le numéro du champ inode"
Etc.
Ca me parait beaucoup plus rapide et simple
@++
Vous hésitez entre Linux et Windows ?
Vous voulez dépenser du temps ou de l'argent ?
Je commencerais par un "find ." qui te donnera tous les fichiers ... Ensuite, c'est facile de faire un ls -l sur chacun,
un tr -s ' ' pour simplifier les espaces
un cut -d' ' -f"le numéro du champ inode"
Etc.
Ca me parait beaucoup plus rapide et simple
@++
Vous hésitez entre Linux et Windows ?
Vous voulez dépenser du temps ou de l'argent ?