4 min read

RLG : Manipulation de fichiers

File manipulation

Nommer des fichiers

Évite les caractères spéciaux dans les noms de fichiers. Les plus problématiques sont :

  • / et \ (séparateurs de chemin)
  • * ? : " < > | (interdits sous Windows)
  • # % ; & @ $ + = ~ (souvent bloqués par les services cloud)
  • Espaces et points . (cause des problèmes en scriptes)

Utilise uniquement lettres, chiffres, tirets (-) et underscores (_).
Exemple correct : rapport-2025.pdf ou notes_projet.txt.

Texte

Recherche

# Recherche
grep {flags} {target ("regex" | "string")} {ficher | -r dossier}
Option Description
-i Ignorer la capitalisation lors de la recherche de texte
-E Utilise les expressions régulières POSIX-ERE
-r Recherche récursive dans les sous-dossiers
-c Compte le nombre d'occurrences trouvées
-v Inverse la recherche pour exclure les correspondances
-n Affiche les numéros de ligne des résultats

Remplacement

# remplace `foo` par `bar`
sed 's/foo/bar/g' fichier.txt
# supprimer les ligne contenant `debug`
sed '/debug/d' fichier.txt`
# Remplacer un texte dans plusieurs fichiers
find {chemin_dossier} -type f -name "*.txt" -exec sed -i "s/ancien_texte/nouveau_texte/g" {} +

Le symbole {} représente le nom du fichier trouvé
-i direct sed à l'édition sur place, où le signe + à la fin permet à find de passer plusieurs fichiers à la fois à la commande sed, ce qui est plus efficace.

Example : Remplacer un texte dans les noms ET la contenu des fichiers dans le dossier actuel

# Pour renommer un module de code importé en les autre modules, etc. 
old_text="exporterBulk"
new_text="massExporter"
find . -type f -name "*$old_text*" -exec bash -c 'mv "$1" "${1//'"$old_text"'/'"$new_text"'}"' _ {} \; # remplacer dans les noms des fichiers
find . -type f -exec sed -i "s/$old_text/$new_text/g" {} + # remplacer dans les la contenu des fichiers

Édition de texte

Voir cat << 'EOF' >

Traduction

# Traduction
sudo apt install translate-shell
trans -b -I -p :fr
Option Description
-b Mode brève
-I Mode interactif
-p/-speak Jouer l'audio de la traduction/ du texte original
{lang}:{lang} Définit les langues source:cible eg, en:fr pour anglais > français
-h ou --help Affiche l'aide

Dictionnaire

sdcv $word | less

script pour télécharger Dictionnaire de la langue française par Littré, Émile
Crédit pour digitalisation: François Gannaz, francois.gannaz@littre.org

  • Les dictionnaire pour sdcv
    • $HOME/.stardict/dic
    • dois inclure trois fichiers:
      • (.*).dict.dz : dictionnaire
        • ou (.*).dict (non compressé)
      • $1.idx : index
      • $1.ifo : info

Voir aussi dict

donnée structuré (CSV,etc.)

# recherche pour `/regex/` et afficher column 1,3
awk '/regex/ {print $1, $3}' fichier.txt
# Ouvrir fichier avec libre-office calc
libreoffice --calc {chemin}

PDF

Scan enhancement

#dependence
sudo apt install imagemagick

# amélioration de contraste de scan : imageMagick
convert -density 300 input.pdf -level 33410,65535 output.pdf 

Extraction du texte

# Installer si nécessaire
sudo apt update && sudo apt install poppler-utils -y

# Extraire tout le texte d'un PDF
pdftotext fichier.pdf sortie.txt

# Extraire le texte d'une page spécifique
pdftotext -f 2 -l 2 fichier.pdf sortie_page2.txt

# Extraire en gardant la mise en page
pdftotext -layout fichier.pdf sortie.txt

Image > PDF

# Installer si nécessaire
sudo apt install imagemagick

# Image > PDF : -auto-orient assure que l'orientation de photo spécifié en EXIF est respecté ! 
convert -auto-orient -density 150 -quality 85 \
  {image1} \
  {image2} \
  output.pdf
  
# toutes les images dans un dossier, dans l'ordre chronologique :
sudo apt install libimage-exiftool-perl

convert $(find . -maxdepth 1 -type f \
    \( -iname '*.jpg' -o -iname '*.jpeg' -o -iname '*.png' -o -iname '*.tif' -o -iname '*.tiff' \) \
    -print0 | xargs -0 exiftool -DateTimeOriginal -T -filename | sort | cut -f2) \
    -quality 85 -auto-orient output.pdf

Fusion, conversion, compression, ...

Voir Ghost Script

Conversion des formats

Conversion entre des formats markups

Pandoc

Pandoc est un convertisseur universel de documents. Il permet de transformer des fichiers écrits en Markdown, LaTeX, HTML, DOCX, etc. vers d’autres formats comme PDF, EPUB ou encore DOCX.

sudo apt update
sudo apt install pandoc

Pandoc utilise un moteur LaTeX (par ex. MiKTeX, TeX Live) pour générer des PDF, qui doit être installé sépararement.

Conversion Markdown → PDF (résultats varient)

pandoc fichier.md -o fichier.pdf

Avec moteur spécifique :

pandoc fichier.md -o fichier.pdf --pdf-engine=xelatex

Conversion Markdown → DOCX

pandoc fichier.md -o fichier.docx

Conversion HTML → PDF

pandoc fichier.html -o fichier.pdf

Pandoc est idéal pour automatiser la génération de documents dans des workflows reproductibles, dans des scripts Bash par exemple.

Prince

Prince (anciennement PrinceXML) est un logiciel propriétaire développé par YesLogic qui permet de convertir des documents HTML/XML en PDF avec un rendu typographique de niveau professionnel basé sur CSS.

# Conversion d'un fichier HTML en PDF avec Prince
prince input.html -o output.pdf

Combinez prince avec pandoc pour générer le PDF depuis les autres formats :

pandoc fichier.md -o fichier.html
̣prince fichier.html -o fichier.pdf

Alternatives open‑source :

  • WeasyPrint (Python, CSS → PDF)
  • wkhtmltopdf (HTML → PDF via WebKit)
  • Pandoc (Markdown/HTML → LaTeX → PDF)

Édition de métadonnées (PDF, images) avec ExifTool

ExifTool est un utilitaire puissant pour lire, écrire et supprimer les métadonnées dans de nombreux formats de fichiers, y compris les PDF et les images (JPEG, PNG, TIFF, etc.). Il expose les champs standards (Title, Author, Subject, Keywords) ainsi que les métadonnées XMP.

Installation

sudo apt update
sudo apt install libimage-exiftool-perl

Visualiser les métadonnées

# Afficher toutes les métadonnées
exiftool fichier.pdf

# Afficher avec groupes (XMP, PDF, etc.)
exiftool -G -a fichier.pdf

Modifier les métadonnées

# Modifier les champs standards
exiftool -Title="Rapport annuel" -Author="Rong Zhou" -Subject="Analyse" fichier.pdf

# -overwrite_original : ne crée pas de copie, écrit directement sur l'original
exiftool -overwrite_original \
  "-FileModifyDate=2024:03:07 16:20:11+00:00" \
  "-CreateDate=2024:03:07 16:20:11+00:00" \
  Student-health-examination-ZHOU_Rong_Mr_1614-07-Mar-2024.pdf
  
# Modifier temps d'accès enregistré (géré par OS)
touch -a -t 202403071620.11 yourfile.pdf

# Modifier des champs XMP spécifiques
exiftool -XMP-dc:Creator="Rong Zhou" -XMP-dc:Description="Description détaillée" fichier.pdf

Par défaut, ExifTool crée une copie de sauvegarde fichier.pdf_original.
Pour écraser directement le fichier : ajouter -overwrite_original.

Supprimer les métadonnées

# Supprimer toutes les métadonnées PDF et XMP
exiftool -PDF:All= -XMP:All= fichier.pdf

# Supprimer quelques champs
exiftool -Author= -Creator= -Producer= -Title= fichier.pdf
exiftool -Software= "-XMP Toolkit="   fichier.pdf

Vous obtiendrez un avertissement :

Warning: [minor] ExifTool PDF edits are reversible. Deleted tags may be recovered! - Student-health-examination-ZHOU_Rong_Mr_1614-07-Mar-2024.pdf

Dans les fichiers PDF, ExifTool ne réécrit pas l’intégralité du document : il ajoute une nouvelle section de mise à jour contenant les métadonnées modifiées. Les anciennes métadonnées restent physiquement présentes dans le fichier, simplement marquées comme obsolètes. Cela signifie que les balises supprimées peuvent techniquement être récupérées avec des outils d’analyse forensique, car les données originales ne sont pas effacées mais seulement remplacées.

👉 Pour les supprimer de manière irréversible du fichier PDF, il faut reconstruire le document ensuite avec :

qpdf --linearize input.pdf output.pdf

Traitement en masse

# Ajouter un titre commun à tous les PDF du dossier
exiftool -Title="Rapport 2025" *.pdf

Bonnes pratiques

  • Toujours conserver une copie de sauvegarde avant modification.
  • Vérifier le résultat avec exiftool fichier.pdf ou pdfinfo fichier.pdf.
  • Pour les images, ExifTool peut aussi modifier les champs EXIF (DateTimeOriginal, Orientation, etc.), utile pour organiser ou corriger des photos avant conversion en PDF.

⚠️ Les PDF n’ont pas de véritable EXIF comme les images, mais ExifTool gère leurs métadonnées via les champs Info Dictionary et XMP.