RLG : Manipulation de fichiers
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é
-idirectsedà l'édition sur place, où le signe+à la fin permet àfindde 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é)
- ou
$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}
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
princeavecpandocpour 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.pdfDans 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.pdfoupdfinfo 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.
Member discussion