Voici comment réaliser des actions sur les fichiers :
Copier un fichier
Pour copier un fichier :
file copy /monfichier /monrepertoiredestination
file copy /home/user/monfichier
/home/user/
(j'ai mis le texte sur 2 lignes pour plus de lisibilité, mais il ne s'agit que d'une ligne)
Copier des fichiers
Pour copier plusieurs fichiers :
file copy fichier1 fichier2 fichier3 /madestination
file copy file1.txt
file2.txt /home/user/
Effacer un fichier
Pour effacer un fichier :
file delete file1.txt
Effacer plusieurs fichiers
Pour effacer plusieurs fichiers :
file delete file1.txt file2.txt
Tester si un fichier existe
Pour savoir si un fichier existe :
set bob [file exist file1.txt]
$bob = 1 : le fichier est présent
$bob = 0 : Le fichier est absent
Tester si exécutable
Pour savoir si un fichier est un exécutable :
set bob [file executable file1.txt]
$bob = 1 : le fichier est un éxécutable
$bob = 0 : Le fichier n'est pas exécutable
Connaitre l'extention du fichier
Pour connaitre l'extention d'un fichier :
set bob [file extension file1.txt]
renverra :
txt
Savoir si un chemin pointe un répertoire
Pour savoir si un chemin est un répertoire :
set bob [file isdirectory file1.txt]
$bob = 1 : C'est un répertoire
$bob = 0 : Ce n'est pas un répertoire
Savoir si un chemin pointe vers un fichier
Pour savori si un chemin pointe vers un fichier :
set bob [file isfile file1.txt]
$bob = 1 : C'est un fichier
$bob = 0 : Ce n'est pas un fichier.
Créer un répertoire
Pour créer un répertoire :
file mkdir /home/user/hello
créera le répertoire hello
Renommer un fichier
Pour renommer un fichier ou un répertoire :
file rename /home/user/file1.txt
/home/user.file2.txt
Connaître la taille d'un fichier ou répertoire
Pour connaître la taille d'un fichier ou répertoire :
file size /home/user/bobi.txt
renverra 10000 bytes
.
Voici comment travailler avec le contenu des fichiers :
Ouvrir un fichier texte
Pour ouvrir un fichier texte et le stocker dans une variable (file_data par exemple)
set fp [open "chemindufichier" r] set file_data [read $fp] close $fp
Les données texte seront stockés dans la variable $file_data
Séparer chaque ligne du fichier texte ainsi ouvert.
Le fichier ainsi ouvert nous pouvons traiter chaque ligne dans une boucle forearch comme ceci :
set data [split $file_data "\n"] foreach line $data { # traite chaque ligne... }
ENREGISTRER UN FICHIER TEXTE
La sauvegarde s'effectue ainsi:
voici un exemple
set monfichier [open "lechemin/fichier.txt" "w"] % puts $monfichier $montexte % close $monfichier
.
extraire le nom d'un fichier depuis un chemin complet
Soit par exemple le chemin complet d'un fichier sous la forme :
/home/utilisateur/hier/demain/afaire/monfichier.txt
pour ne récupérer que le nom du fichier il suffit de séparer la chaine avec le caractère / puis de créer une liste.
Enfin; il suffit de trouver le dernier élément de la liste. Voici le code :
set machaine "/home/utilisateur/hier/demain/afaire/monfichier.txt" set maliste [ split $machaine "/" ] set lefichier [lindex $maliste [ expr [ llength $maliste ] -1 ]]
Vous l'aurez certainement compris pour la dernière ligne, pour trouver l'index du dernier item de la liste il faut calculer la longueur de la liste maliste moins un (car la liste commence par 0)
Enfin, j'utilise la commande expr car on ne peut calculer la somme d'une chaine de caractères, il faut dire à tcl qu'il s'agit d'entiers.