Vous êtes sur la page 1sur 17

Chapitre 8 - Gestion des fichiers et des

répertoires
8.1 Présentation
Lorsque vous travaillez dans un système d'exploitation Linux, il est
important de savoir comment manipuler les fichiers et les
répertoires. Certaines distributions Linux ont des applications basées sur
une interface graphique qui vous permettent de gérer des fichiers, mais il
est avantageux de savoir comment effectuer ces opérations via la ligne
de commande.
Noter
Il est important de noter que tout dans Linux est sensible à la casse, une
fonctionnalité reprise d'Unix. Cela signifie que le shell reconnaît un
caractère a- minuscule comme complètement différent d'un
caractère - zmajuscule . Lors de la manipulation de fichiers, faites
attention à votre capitalisation : un fichier est différent des
fichiers et .AZhello.txtHELLO.txtHello.txt
La norme de caractères utilisée pour Linux est la norme UTF-8 qui est
basée sur l'ASCII (American Standard Code for American
Interchange). Pour en savoir plus sur ASCII, exécutez la man -s 7
asciicommande.

8.2 Globbing
Les caractères Glob sont souvent appelés jokers. Ce sont des symboles
qui ont une signification particulière pour le shell.
Les globs sont puissants car ils vous permettent de spécifier des
modèles qui correspondent aux noms de fichiers dans un
répertoire. Ainsi, au lieu de manipuler un seul fichier à la fois, vous
pouvez facilement exécuter des commandes qui affectent de nombreux
fichiers. Par exemple, en utilisant des caractères glob, il est possible de
manipuler tous les fichiers avec une extension spécifique ou avec une
longueur de nom de fichier particulière.
Contrairement aux commandes exécutées par le shell ou aux options et
arguments que le shell transmet aux commandes, les caractères glob
sont interprétés par le shell lui-même avant qu'il ne tente d'exécuter une

1
commande. Par conséquent, les caractères glob peuvent être utilisés
avec n'importe quelle commande.
Les exemples fournis dans ce chapitre utilisent la echocommande pour la
démonstration.

8.2.1 Astérisque * Caractère


Le caractère astérisque *est utilisé pour représenter zéro ou plusieurs
caractères dans un nom de fichier. Par exemple, pour afficher tous les
fichiers du /etc répertoire commençant par la lettre t:

sysadmin@localhost : ~ $ echo /etc/t*


/etc/terminfo /etc/timezone /etc/tmpfiles.d

Le modèle t*correspond à n'importe quel fichier du /etc répertoire qui


commence par le caractère t suivi de zéro ou plus de n'importe quel
caractère. En d'autres termes, tous les fichiers commençant par la
lettre t.
Vous pouvez utiliser le caractère astérisque à n'importe quel endroit du
modèle de nom de fichier. Par exemple, ce qui suit correspond à
n'importe quel nom de fichier dans le /etc répertoire qui se termine
par .d :

sysadmin@localhost : ~ $ echo /etc/*.d


/etc/apparmor.d /etc/binfmt.d /etc/cron.d /etc/depmod.d /etc/init.d
/etc/insserv
.conf.d /etc/ld.so.conf.d /etc/logrotate.d /etc/modprobe.d /etc/modules-
load.d /
etc/pam.d /etc/profile.d /etc/rc0.d /etc/rc1.d /etc/rc2.d /etc/rc3.d /etc/rc4.d
/etc/rc5.d /etc/rc6.d /etc/rcS.d /etc/rsyslog.d /etc/sudoers.d /etc/sysctl.d
/et
c/tmpfiles.d /etc/update-motd.d

Dans l'exemple suivant, tous les fichiers du /etc répertoire commençant


par la lettre r et se terminant par .conf sont affichés :

sysadmin@localhost : ~ $ echo /etc/r*.conf

2
/etc/resolv.conf /etc/rsyslog.conf

8.2.2 Point
d'interrogation ? Personnage
Le caractère point d'interrogation ?représente n'importe quel caractère
unique. Chaque caractère de point d'interrogation correspond
exactement à un caractère, ni plus ni moins.
Supposons que vous souhaitiez afficher tous les fichiers du /etc
répertoire commençant par la lettre t et comportant exactement 7
caractères après le t caractère :

sysadmin@localhost : ~ $ echo /etc/t???????


/etc/terminfo /etc/timezone

Les caractères Glob peuvent être utilisés ensemble pour trouver des
motifs encore plus complexes. La commande
pattern /etc/*???????????????????? ne fait correspondre que les
fichiers du /etc répertoire avec vingt caractères ou plus dans le nom de
fichier :

sysadmin@localhost : ~ $ echo /etc/*????????????????????


/etc/bindresvport.blacklist /etc/ca-certificates.conf

L'astérisque et le point d'interrogation peuvent également être utilisés


ensemble pour rechercher des fichiers avec des extensions à trois lettres
en utilisant le /etc/*.??? modèle :

sysadmin@localhost : ~ $ echo /etc/*.???


/etc/issue.net /etc/locale.gen

8.2.3 Caractères crochets [ ]


Les crochets []sont utilisés pour correspondre à un seul caractère en
représentant une plage de caractères qui sont des caractères de
correspondance possibles. Par exemple, le /etc/[gu]* modèle correspond

3
à tout fichier commençant par un caractère g ou u et contenant zéro ou
plusieurs caractères supplémentaires :

sysadmin@localhost : ~ $ echo /etc/[gu]*


/etc/gai.conf /etc/groff /etc/group /etc/group- /etc/gshadow
/etc/gshadow- /etc/
gss /etc/ucf.conf /etc/udev /etc/ufw /etc/update-motd.d
/etc/updatedb.conf

Les crochets peuvent également être utilisés pour représenter une plage
de caractères. Par exemple, le /etc/[a-d]* modèle correspond à tous les
fichiers qui commencent par n'importe quelle lettre entre et y compris a
et d :

sysadmin@localhost : ~ $ echo /etc/[ad]*


/etc/adduser.conf /etc/alternatives /etc/apparmor /etc/apparmor.d /etc/apt
/etc/
bash.bashrc /etc/bind /etc/bindresvport.blacklist /etc/binfmt.d /etc/ca-
certific
ates /etc/ca-certificates.conf /etc/calendar /etc/console-setup
/etc/cron.d /etc
/cron.daily /etc/cron.hourly /etc/cron.monthly /etc/cron.weekly
/etc/crontab /et
c/dbus-1 /etc/debconf.conf /etc/debian_version /etc/default
/etc/deluser.conf /e
tc/depmod.d /etc/dhcp /etc/dpkg

Le /etc/*[0-9]*modèle affiche tout fichier contenant au moins un numéro :

sysadmin@localhost : ~ $ echo /etc/*[0-9]*


/etc/X11 /etc/dbus-1 /etc/iproute2 /etc/mke2fs.conf /etc/python3
/etc/python3.6
/etc/rc0.d /etc/rc1.d /etc/rc2.d /etc/rc3.d /etc/rc4.d /etc/rc5.d /etc/rc6.d

La plage est basée sur la table de texte ASCII . Ce tableau définit une
liste de caractères, en les organisant dans un ordre standard
spécifique. Si une commande non valide est fournie, aucune
correspondance ne sera effectuée :

4
sysadmin@localhost : ~ $ echo /etc/*[9-0]*
/etc/*[9-0]*

Noter
La table de texte ASCII peut être visualisée dans nos machines virtuelles
en exécutant la asciicommande.

8.2.4 Point
d'exclamation ! Personnage
Le caractère point d'exclamation !est utilisé conjointement avec les
crochets pour annuler une plage. Par exemple, le modèle /etc/[!
DP]*correspond à tout fichier qui ne commence pas par a D ou P .

sysadmin@localhost : ~ $ echo /etc/[!at]*


/etc/X11 /etc/ucf.conf /etc/udev /etc/ufw /etc/update-motd.d
/etc/updatedb.conf
/etc/vim /etc/vtrgb /etc/wgetrc /etc/xdg

8.2.5 Lister avec des Globs


La ls commande est normalement utilisée pour lister les fichiers dans un
répertoire ; par conséquent, l'utilisation de la echo commande peut
sembler avoir été un choix étrange. Cependant, il y a quelque chose
dans la ls commande qui cause des problèmes lors de la liste des
fichiers à l'aide de modèles glob.
Gardez à l'esprit que c'est le shell, et non la commande echo or ls, qui
développe le modèle glob dans les noms de fichiers correspondants. En
d'autres termes, si la echo /etc/a* commande est exécutée, ce que le shell
a fait avant d'exécuter la commande echo a été remplacé a*par tous les
fichiers et répertoires du /etcrépertoire qui correspondent au modèle.
Donc, si la ls /etc/a* commande est exécutée, ce que le shell exécuterait
réellement serait ceci :

5
ls /etc/adduser.conf /etc/alternatives /etc/apparmor /etc/apparmor.d
/etc/apt

Lorsque la ls commande voit plusieurs arguments, elle effectue une


opération de liste sur chaque élément séparément. En d'autres termes, ls
/etc/a* revient au même que d'exécuter consécutivement les commandes
suivantes :

ls /etc/adduser.conf
ls /etc/alternatives
ls /etc/apparmor
ls /etc/apparmor.d
ls /etc/apt

Considérez maintenant ce qui se passe si la ls commande reçoit un


fichier, tel que /etc/adduser.conf:

sysadmin@localhost : ~ $ ls /etc/adduser.conf
/etc/adduser.conf

L'exécution de la ls commande sur un seul fichier donne le nom du fichier


en cours d'impression ; cela est généralement utile si l' -l option est
utilisée pour voir les détails d'un fichier spécifique :

sysadmin@localhost : ~ $ ls -l /etc/adduser.conf
-rw-r--r-- 1 racine racine 3028 26 mai 2018 /etc/adduser.conf

Cependant, que se passe-t-il si la ls commande reçoit un nom de


répertoire comme argument ? Dans ce cas, la sortie de la commande est
différente que si l'argument était un fichier normal :

sysadmin@localhost : ~ $ ls /etc/apparmor
init parser.conf subdomain.conf

Si la ls commande reçoit un nom de répertoire, la commande affiche


le contenu du répertoire (les noms des fichiers dans le répertoire), pas
seulement le nom du répertoire. Les noms de fichiers dans l'exemple
précédent sont les noms des fichiers du /etc/apparmorrépertoire.

6
Pourquoi est-ce un problème lors de l'utilisation de globs ? Considérez la
sortie suivante :

sysadmin@localhost : ~ $ ls /etc/ap*
/etc/apparmor :
init analyseur.conf sous-domaine.conf

/etc/apparmor.d :
les abstractions désactivent les réglages locaux usr.sbin.named
cache force-complain sbin.dhclient usr.bin.man usr.sbin.rsyslogd

/etc/apt :
apt.conf.d preferences.d sources.list sources.list.d trusted.gpg.d

Lorsque la lscommande voit un nom de fichier comme argument, elle


affiche simplement le nom de fichier. Cependant, pour tout répertoire, il
affiche le contenu du répertoire, pas seulement le nom du répertoire.
Cela devient encore plus déroutant dans une situation comme celle-ci :

sysadmin@localhost : ~ $ ls /etc/x*
autostart systemd user-dirs.conf user-dirs.defaults

Dans l'exemple précédent, il semble que la lscommande soit tout


simplement fausse. Cependant, ce qui s'est réellement passé, c'est que
la seule chose qui corresponde au glob /etc/x*est le /etc/xdgrépertoire.
Ainsi, la lscommande n'affichait que les fichiers de ce répertoire !
Il existe une solution simple à ce problème : utilisez toujours l' -doption
avec globs, qui indique à la lscommande d'afficher le nom des
répertoires, au lieu de leur contenu :

sysadmin@localhost : ~ $ ls -d /etc/x*
/etc/xdg

8.3 Copier des fichiers


7
La cpcommande est utilisée pour copier des fichiers. Il nécessite une
source et une destination. La structure de la commande est la suivante :

cp [source] [destination]

La source est le fichier à copier. La destination est l'endroit où la copie


doit être placée. En cas de succès, la cpcommande n'a aucune sortie
(aucune nouvelle est une bonne nouvelle). La commande suivante copie
le /etc/hosts fichier dans votre répertoire personnel :

sysadmin@localhost : ~ $ cp /etc/hosts ~
sysadmin@localhost : ~ $ ls
Bureau Téléchargements Images Modèles hôtes
Documents Musique Vidéos publiques

Rappel : Le ~caractère représente votre répertoire personnel.

8.3.1 Mode verbeux


L' -v option permet à la cp commande de produire une sortie en cas de
succès. L' -v option signifie verbeux :

sysadmin@localhost : ~ $ cp -v /etc/hosts ~
`/etc/hosts' -> `/home/sysadmin/hosts'

Lorsque la destination est un répertoire, le nouveau fichier résultant


conserve le même nom que le fichier d'origine. Pour donner au nouveau
fichier un nom différent, indiquez le nouveau nom dans le cadre de la
destination :

sysadmin@localhost : ~ $ cp /etc/hosts ~/hosts.copy


sysadmin@localhost : ~ $ ls
Bureau Téléchargements Images Modèles hôtes
Documents Musique Vidéos publiques hosts.copy

8.3.2 Éviter d'écraser les données


8
La cp commande peut être destructive pour les données existantes si le
fichier de destination existe déjà. Dans le cas où le fichier de destination
existe, la cp commande écrase le contenu du fichier existant avec le
contenu du fichier source.
Pour illustrer ce problème potentiel, un nouveau fichier est d'abord créé
dans le répertoire personnel en copiant un fichier existant :

sysadmin@localhost : ~ $ cp /etc/hostname exemple.txt

Affichez les informations sur le fichier avec la ls commande :

sysadmin@localhost : ~ $ ls -l exemple.txt
-rw-r--r-- 1 administrateur système administrateur système 10 décembre
15 22:55 example.txt

Affichez le contenu du fichier à l'aide de la cat commande :

sysadmin@localhost : ~ $ cat example.txt


hôte local

Dans l'exemple suivant, la cp commande détruit le contenu original


du example.txtfichier :

sysadmin@localhost : ~ $ cp /etc/timezone example.txt

Notez qu'une fois la cpcommande terminée, la taille du fichier a changé


et le contenu est différent :

sysadmin@localhost : ~ $ ls -l exemple.txt
-rw-r--r-- 1 administrateur système administrateur système 8 15
décembre 22:58 exemple.txt
sysadmin@localhost : ~ $ cat exemple.txt
Etc./UTC

Deux options peuvent être utilisées pour se protéger contre les


écrasements accidentels. Avec l' option -i interactive cp , la commande
invite l'utilisateur avant d'écraser un fichier. L'exemple suivant illustre
cette option, en restaurant d'abord le contenu du fichier d'origine :

sysadmin@localhost : ~ $ cp -i /etc/hosts exemple.txt

9
cp : écraser `/home/sysadmin/example.txt' ? n

Si une valeur de y(oui) était donnée, alors le processus de copie aurait


eu lieu. Cependant, la valeur de n(non) a été donnée lorsque vous êtes
invité à écraser le fichier, donc aucune modification n'a été apportée au
fichier.
L' -ioption vous oblige à répondre you npour chaque copie qui pourrait
finir par écraser le contenu d'un fichier existant. Cela peut être fastidieux
lorsqu'un tas d'écrasements se produisent, comme dans l'exemple
illustré ci-dessous :

sysadmin@localhost : ~ $ cp -i /etc/skel/.* ~
cp : -r non spécifié ; omettre le répertoire '/etc/skel/.'
cp : -r non spécifié ; omettre le répertoire '/etc/skel/..'
cp : écraser `/home/sysadmin/.bash_logout' ? n
cp : écraser `/home/sysadmin/.bashrc' ? n
cp : écraser `/home/sysadmin/.profile' ? n
cp : écraser `/home/sysadmin/.selected_editor' ? n

Comme vous pouvez le voir dans l'exemple ci-dessus, la cpcommande a


tenté d'écraser quatre fichiers existants, forçant l'utilisateur à répondre à
quatre invites. Si cette situation se produisait pour 100 fichiers, cela
pourrait devenir très gênant, très rapidement.
Pour répondre nautomatiquement à chaque invite, utilisez l' -
noption. Cela signifie pas de clobber , ou pas d' écrasement .

sysadmin@localhost : ~ $ cp -n /etc/skel/.* ~
cp : -r non spécifié ; omettre le répertoire '/etc/skel/.'
cp : -r non spécifié ; omettre le répertoire '/etc/skel/..'

8.3.3 Copier des répertoires


Par défaut, la cpcommande ne copiera pas les répertoires ; toute
tentative de le faire entraîne un message d'erreur :

sysadmin@localhost : ~ $ cp -n /etc/skel/.* ~

10
cp : -r non spécifié ; omettre le répertoire '/etc/skel/.'
cp : -r non spécifié ; omettre le répertoire '/etc/skel/..'

Cependant, l' option récursive permet à la commande de copier à la fois


les fichiers et les répertoires.-rcp

cp -r répertoire_source répertoire_destination

Soyez prudent avec cette option. La structure entière du répertoire sera


copiée, ce qui pourrait entraîner la copie d'un grand nombre de fichiers
et de répertoires !
Considère ceci
Les options -ret -Ront le même objectif. Cependant, -Rpeut être utilisé
avec la plupart des commandes, tandis que -rpeut avoir des
significations différentes avec certaines commandes. Par exemple,
while cp -rsignifie copier de manière récursive (fichiers et répertoires), ls -
rsignifie tri inversé .

8.4 Déplacer des fichiers


Pour déplacer un fichier, utilisez la mvcommande. La syntaxe de
la mvcommande ressemble beaucoup à la cpcommande :

mv [source] [destination]

Dans l'exemple suivant, le hosts fichier généré précédemment est


déplacé du répertoire courant vers le Videos répertoire :

sysadmin@localhost : ~ $ ls
Téléchargements de bureau Modèles d'images example.txt hosts.copy
Documents Musique Hôtes
de vidéos publiques sysadmin@localhost : ~ $ mv héberge Vidéos
sysadmin@localhost : ~ $ ls
Téléchargements de bureau Modèles d'images example.txt
Documents Musique Hôtes.copy
sysadmin@localhost :~ $ ls Vidéos

11
hôtes

Lorsqu'un fichier est déplacé, le fichier est supprimé de son


emplacement d'origine et placé dans un nouvel emplacement. Le
déplacement de fichiers peut être quelque peu délicat sous Linux car les
utilisateurs ont besoin d'autorisations spécifiques pour supprimer des
fichiers d'un répertoire. Sans les bonnes autorisations, un Permission
denied message d'erreur est renvoyé :

sysadmin@localhost : ~ $ mv /etc/hosts .
mv : impossible de déplacer `/etc/hosts' vers `./hosts' : autorisation
refusée

Les autorisations seront traitées en détail plus tard dans le cours.

8.4.1 Renommer les fichiers


La mvcommande n'est pas seulement utilisée pour déplacer un fichier,
mais aussi pour renommer un fichier. Si la destination de
la mvcommande est un répertoire, le fichier est déplacé vers le répertoire
spécifié. Le nom du fichier ne change que si un nom de fichier de
destination est également spécifié.

sysadmin@localhost : ~ $ ls
Téléchargements de bureau Modèles d'images example.txt
Documents Musique Vidéos publiques hosts.copy
sysadmin@localhost : ~ $ mv example.txt Videos/newexample.txt
sysadmin@localhost : ~ $ ls
Téléchargements de bureau Modèles d'images hosts.copy
Documents Musique Vidéos publiques
sysadmin@localhost : ~ $ls Vidéos
héberge newexample.txt

Si un répertoire de destination n'est pas spécifié, le fichier est renommé


en utilisant le nom du fichier de destination et reste dans le répertoire
source. Par exemple, les commandes suivantes renomment
le newexample.txtfichier en myfile.txt:

12
sysadmin@localhost : ~ $ cd Vidéos
sysadmin@localhost : ~/Videos $ ls
héberge newexample.txt
sysadmin@localhost : ~/Videos $ mv nouvelexemple.txt monfichier.txt
sysadmin@localhost : ~/Videos $ ls
héberge monfichier.txt

Pensez à l' mvexemple précédent pour signifier déplacer


le newexample.txtfichier du répertoire courant vers le répertoire courant
et donner au nouveau fichier le nommyfile.txt .

8.4.2 Options de déplacement


supplémentaires
Comme la cpcommande, la mvcommande fournit les options suivantes :

Option Signification

-i Interactif : Demander si un fichier doit


être écrasé.

-n No Clobber : N'écrase pas le contenu


d'un fichier de destination.

-v Verbose : affiche le mouvement

13
Option Signification

résultant.

Important
Il n'y a pas -rd'option car la mvcommande déplace les répertoires par
défaut.

8.5 Création de fichiers


Il existe plusieurs façons de créer un nouveau fichier, y compris
l'utilisation d'un programme conçu pour éditer un fichier (un éditeur de
texte).
Il existe également un moyen de créer un fichier vide qui peut être rempli
de données ultérieurement. Cette fonctionnalité est utile pour certains
systèmes d'exploitation car l'existence même d'un fichier peut modifier le
fonctionnement d'une commande ou d'un service. Il est également utile
de créer un fichier en tant qu'"espace réservé" pour vous rappeler de
créer le contenu du fichier ultérieurement.
Pour créer un fichier vide, utilisez la touchcommande comme illustré ci-
dessous :

sysadmin@localhost : ~ exemple $ touch


sysadmin@localhost : ~ exemple $ ls -l
-rw-rw-r-- 1 administrateur système administrateur système 0 9
novembre 16:48 exemple

Notez que la taille du nouveau fichier est en 0octets. Comme mentionné


précédemment, la touchcommande ne place aucune donnée dans le
nouveau fichier.
Les éditeurs de texte seront abordés en détail plus tard dans le cours.

8.6 Suppression de fichiers


Pour supprimer un fichier, utilisez la rmcommande :
14
sysadmin@localhost : ~ $ ls
Desktop Téléchargements Images Modèles hosts.copy
Documents Musique Public Videos sample
sysadmin@localhost : ~ $ rm sample
sysadmin@localhost : ~ $ rm hosts.copy
sysadmin@localhost : ~ $ ls
Desktop Documents Téléchargements Musique Images Public Vidéos
de modèles

Notez que les fichiers ont été supprimés sans poser de questions. Cela
pourrait causer des problèmes lors de la suppression de plusieurs
fichiers à l'aide de caractères glob. Étant donné que ces fichiers sont
supprimés sans aucun doute, un utilisateur pourrait finir par supprimer
des fichiers qui n'étaient pas destinés à être supprimés.
Avertissement
Les fichiers sont définitivement supprimés. Il n'y a pas de commande
pour restaurer un fichier et pas de corbeille à partir de laquelle récupérer
les fichiers supprimés.
Par précaution, les utilisateurs doivent utiliser l' -ioption lors de la
suppression de plusieurs fichiers :

sysadmin@localhost : ~ $ touch sample.txt example.txt test.txt


sysadmin@localhost : ~ $ ls
Bureau Téléchargements Images Modèles example.txt test.txt
Documents Musique Vidéos publiques sample.txt
sysadmin@localhost : ~ $ rm -i * .SMS
rm : supprimer le fichier vide normal `example.txt' ? y
rm : supprimer le fichier vide normal `sample.txt' ? n
rm : supprimer le fichier vide normal `test.txt' ? y
sysadmin@localhost : ~ $ ls
Bureau Téléchargements Images Modèles sample.txt
Documents Musique Vidéos publiques

15
8.6.1 Suppression de répertoires
Vous pouvez supprimer des répertoires à l'aide de
la rmcommande. Cependant, le comportement par défaut (pas d'options)
de la rmcommande est de ne pas supprimer les répertoires :

sysadmin@localhost : ~ $ rm Vidéos
rm : impossible de supprimer `Videos' : est un répertoire

Pour supprimer un répertoire avec la rmcommande, utilisez l' option -


r récursive :

sysadmin@localhost : ~ $ ls
Bureau Téléchargements Images Modèles sample.txt
Documents Musique Vidéos publiques
sysadmin@localhost : ~ $ rm -r Vidéos
sysadmin@localhost : ~ $ ls
Bureau Documents Téléchargements Musique Images Modèles publics
sample.txt

Lorsqu'un utilisateur supprime un répertoire, tous les fichiers et sous-


répertoires sont supprimés sans aucune question interactive. Il est
préférable d'utiliser l' -ioption avec la rmcommande.
Vous pouvez également supprimer un répertoire avec la rmdircommande,
mais uniquement si le répertoire est vide.

sysadmin@localhost : ~ $ rmdir Documents


rmdir : échec de la suppression de 'Documents' : répertoire non vide

8.7 Création de répertoires


Pour créer un répertoire, utilisez la mkdircommande :

sysadmin@localhost : ~ $ ls

16
Bureau Documents Téléchargements Musique Images Modèles publics
sample.txt
sysadmin@localhost : ~ $ mkdir test
sysadmin@localhost : ~ $ ls
Bureau Téléchargements Images Modèles test
Documents Musique Public sample.txt

17

Vous aimerez peut-être aussi