Outils pour utilisateurs

Outils du site


linux:fichier:accueil

Fichier

Sujets liés

Masque de création

umask - Masque de création des fichiers et dossiers.

Calcul :

  • Fichiers : 06668 AND NOT 00228 = 06448
  • Dossiers : 07778 AND NOT 00228 = 07558
Umask Fichiers Dossiers
000 666 (r w - r w - r w -) 777 (r w x r w x r w x)
002 664 (r w - r w - r - -) 775 (r w x r w x r - x)
022 644 (r w - r - - r - -) 755 (r w x r - x r - x)
027 640 (r w - r - - - - -) 750 (r w x r - x - - -)
077 600 (r w - - - - - - -) 700 (r w x - - - - - -)
277 400 (r - - - - - - - -) 500 (r - x - - - - - -)

Extensions de fichiers

Extension Type de fichier
.7z Archive 7-Zip
.ace Archive WinAce
.alz Archive ALZip
.ar Petite archive indexée AIX
.arj Archive ARJ
.cab Fichier CAB
.cpio Archive UNIX CPIO
.deb Paquet Debian
.iso Image de CD ISO-9660
.jar Archive Java
.ear Archive Java Enterprise
.war Archive Java Web
.lha Archive LHA
.lzh Archive LHA
.rar Archive compressée avec WinRAR
.cbr Comic book compressé en RAR
.rpm Paquet RedHat
.tar Archive tar non compressée
.tbz Archive tar compressée avec bzip (ou .tar.bz)
.tbz2 Archive tar compressée avec bzip2 (ou .tar.bz2)
.tgz Archive tar compressée avec gzip (ou .tar.gz)
.txz Archive tar compressée avec xz /Lzma (ou .tar.xz) apt://xz-utils
.tzo Archive tar compressée avec lzop (ou .tar.lzo)
.bin Archives Stuffit
.sit Archives Stuffit
.zip Archive PKZIP ou WinZip
.cbz Comic Book compressé en ZIP
.zoo Archive Zoo

Analyser

Empreintes MD5

Permet de contrôler l'empreinte numérique d'un fichier et par exemple de contrôler l'intégrité d'un fichier téléchargé.

Générer

$ md5sum fichier.zip > fichier.md5
fichier.md5
b1e4af08cacf62b726a70f94579b50dc  fichier.zip

Vérifier

$ md5sum -c fichier.md5
fichier.zip: OK

Afficher l'occupation disque

Afficher la taille de chaque répertoire sans afficher la taille des sous-répertoires.

$ du -sh *

Trier le résultat par taille :

$ du -sh * | sort -rn

Nécessite une version de coreutils >=7.5

ou

$ du -s * |sort -rn |cut -f2|xargs -d '\n' du -sh

Afficher en continu le nombre de fichiers

$ clear ; \
  while true ; do \
      echo $[`ls -l | wc -l` - 1] ; \
      sleep 1 ; \
  done

Remarques:

  • (-1) car la commande ls -l affiche une première ligne qui n'est pas un fichier.
  • pause de 1 seconde entre chaque affichage.


ou plus simplement avec la commande watch

$ watch echo $[`ls -l | wc -l` - 1]

Lister les dossiers de plus de 1 Go

$ du -sh * | sort -n | egrep '[0-9]\.[0-9]G'

Créer

Créer un fichier de taille donnée

  • Créer un gros fichier de 5 Go.
$ dd if=/dev/zero of=fichier bs=512k count=10240
  • Créer 2000 fichiers de 10 Ko
$ for (( i = 1; i <= 2000 ; i++ )) ; do \
      dd if=/dev/zero of=test10k-$(printf '%04d' $i).bin bs=10k count=1; \
  done
  • Créer 10 fichiers entre 1 et 320 Ko
for (( i = 1; i < 10 ; i++ )) ; do \
    dd if=/dev/zero of=$(printf '%04d' $i).bin bs=10k count=$((RANDOM / 1024)) ; \
done

Supprimer

Fichiers temporaires

$ find . -name '~' -print0 | perl -n0e unlink

Les "vieux" fichiers

Ici, les fichiers datant de plus de 7 jours.

$ find ./ -name "*" -mtime +7 -exec rm {} \;

Ici, les fichiers plus vieux de 15 minutes :

$ find ./ -maxdepth 1 -type f -mmin +15 -delete

Fichiers nommés avec des caractères spéciaux

Supprimer un fichier nommé ?

Dans le répertoire courant :

$ emacs .
  • marquer le fichier à supprimer “D”
  • valider la suppression “x”

ou utiliser l'inode du fichier

$ ls -il
$ find . -inum 1668 -exec rm -i {} \;

Les dossiers vides

$ find . -type d -empty -delete

Déplacer

par lot d'une arborescence à une autre

script.sh
for REP in * ; do
    if [ -d $REP ] ; then
        for F in $(find $REP -name "*.gz") ; do
            FIC=$(basename $F)
            if [ ! -e "/flux/archive/messages/archive/$REP/archives/$FIC" ] ; then
                mv ./$REP/$FIC /flux/archive/messages/archive/$REP/archives/
            fi
        done
    fi
done

un par un à intervalle contrôlé

script.sh
for i in * ; do
      FIC=$(ls | head -n 1)
      echo $FIC
      mv $FIC rep_destination/
      sleep 20
done

Modifier

Vider le contenu d'un fichier

$ >fichier

Concaténer

Fichier texte

$ cat *_report.csv >>full_report.csv

Renommer

Ajouter une extension

Renommer fichier.txt en fichier.txt.sav

$ mv fichier.txt{,.sav}

Changer la casse

Du nom de fichier

Passer les noms de fichiers de majuscule en minuscule :

$ rename 'y/A-Z/a-z/' *.fic

Changer la case des noms de fichiers dans une arborescence sans toucher aux noms de dossier :

$ find ./ -name '*.JPG' -type f -execdir rename -f 'y/A-Z/a-z/' {} \+

De la première lettre du nom

  • Passer la première lettre des noms de fichiers en majuscule
$ rename 's/^([a-zA-Z]{1})/\U$1/' *

De l'extension

  • Passer toutes les extensions en minuscule :
$ rename 's/\.([A-Z]*)$/\.\L$1/' *
  • Passer toutes les extensions en majuscule :
$ rename 's/\.([A-Z]*)$/\.\U$1/' *

Renommer en gardant l'extension

Fichiers : toi et moi.txt → Toi_et_moi.txt
toi et moi.csv → Toi_et_moi.csv

$ for i in toi* ; do mv "$i" "Toi_et_moi.${i#*.}" ; done

Copier

Synchroniser deux répertoires

Synchronisation

$ rsync -av src/ dst/

Synchronisation avec indicateur de progression

$ rsync -avP src/ dst/

Synchroniser en effacant les fichiers ne se trouvant plus dans la source

$ rsync -avP --delete src/ dst/

Concaténer fichiers Texte

$ cat *.txt > ../resultat.txt

Traitements

Extraire le nom et l’extension

$ FICHIER=fichier.txt
 
# Nom
$ basename $FICHIER .txt
fichier
 
$ echo ${FICHIER%.*}
fichier
 
# Extension
$ echo ${FICHIER#*.}
txt

Si le nom contient plusieurs extensions :

$ FICHIER=archive.tar.gz
 
$ echo ${FICHIER%%.*}
archive
 
$ echo ${FICHIER%.*}
archive.tar
 
$ echo ${FICHIER#*.}
tar.gz
 
$ echo ${FICHIER##*.}
gz

Split d'un nom de fichier

$ FICHIER=AAAA-MM-JJ-Photo001.jpg
 
# Année
$ basename $FICHIER .jpg | cut -d '-' -f1
AAAA
 
# Mois
$ basename $FICHIER .jpg | cut -d '-' -f2
MM
 
# Jour
$ basename $FICHIER .jpg | cut -d '-' -f3
JJ

Comparer deux fichiers

Assez lisible

$ diff -c fichier1 fichier2

Sur deux colonnes

$ diff --side-by-side fichier1 fichier2

ou

$ sdiff fichier1 fichier2

Supprimer les lignes identiques

$ sdiff -s fichier1 fichier2

Nom de fichier avec espace

Boucle for

script.sh
# Modifier le séparateur de champ
S_IFS=$IFS
IFS=$'\n'
 
for fichier in $(ls) ; do
    echo $fichier
done
 
IFS=$S_IFS

Liens

linux/fichier/accueil.txt · Dernière modification: 2018/04/19 17:01 par stephane

Outils de la page