Cours:Manipulation de fichiers avec Bash
De GBLL, TAL, ALAO, etc.
Cette page a pour objectif de vous présenter quelques commandes bash pour manipuler des fichiers et du texte sur votre ordinateur.
Installation de Bash
- Si vous êtes sur Windows, vous avez plusieurs 2 possibilités :
- Installer Bash For Windows, le plus simple pour une utilisation limitée, typiquement Git en ligne de commande.
- Activer le terminal Linux/Bash natif de Windows10, qui vous permettra d'utiliser la plupart des commandes Linux.
- Si vous êtes sur Mac, il suffit d'ouvrir votre terminal.
- Si vous êtes sur Linux, il suffit d'ouvrir votre terminal.
Quelques tutos pouvant aider :
- Grenoble Software Carpentry
- Git Bash for Windows, Bash Basics
- Tutoriel Windows : Bash sur Windows
- How to Run Linux/Bash on Windows 10 Using the Built-In Windows Subsystem for Linux
Ouvrir le terminal Bash
(parmi de nombreuses façons d'ouvrir votre terminal)
- WINDOWS avec Git Bash : Dans le dossier de votre choix, clic droit puis Git Bash Here ;
- Linux :
ctrl+alt+t
, ou dans un dossier clic droit puis ouvrir dans un terminal ; - Mac : entrez "terminal" dans le dock.
Certaines commandes présentées sur cette page sont susceptibles de ne pas fonctionner avec Bash For Windows (qui est un peu limité).
D'autres tuto :
- Command Line Essentials: Git Bash for Windows (bien détaillé)
- LINUX - LA BASE DES LIGNES DE COMMANDES 🤖
Bases de la base
Redirection des entrées/sorties 🔃
<
: Lire depuis un fichier d'entrée>
: Écrire dans un fichier de sortie (crée ou écrase le fichier de sortie)>>
: Append à la suite, sans écraser le fichier de sortie|
: Rediriger la sortie de la commande précédente vers l'entrée de la commande suivante (pipe[1])
pwd
: Affiche le chemin absolu depuis la racine jusqu'au rép. courantcd <chemin>
: Aller vers <chemin> (absolu ou relatif à partir du rép. courant)cd sousDossier
: Aller dans sousDossiercd ..
: Aller dans le répertoire parentcd /
: Aller à la racine de l'ordinateur (sur Windows — gitbash —, il s'agit du dossier où est installé Git)cd ~
: Revenir au répertoire Home
ls
: Liste les fichiers et dossiers présents dans le répertoire courantls -F
: idem, liste que les fichiersls -F /home
: Liste les fichiers dans le rép. /homels -a
: Liste également les fichiers et dossiers cachésls -l
: Affiche le détail de chaque élémentls -sh
: Affiche la taillels -shS
: Affiche la taille et trie par taillels -R
: Récursif : détail le contenu de chaque sous-répertoires
Manipulation de fichiers
cat fichier.txt
: Affiche le contenu du fichier dans le terminalmore fichier.txt
: Afficher le contenu du fichier petit à petit (appuyer sur espace ou entrée pour afficher plus, ctrl+c pour quitter)head fichier.txt
: Affiche les 10 premières lignestail fichier.txt
: Affiche les 10 dernières ligneshead -n 50 fichier.txt
: Affiche les 50 premières lignesvim fichier.txt
: Éditer le fichier.txt avec vim (éditeur en ligne de commande)nano fichier.txt
: Éditer le fichier.txt avec nano (éditeur en ligne de commande)touch fichier.txt
: Créer un fichier nommé fichier.txtcp fichier.txt nouveauNom.txt
: Copie fichier.txt et le renomme en "nouveauNom.txt"mv fichier.txt nouveauNom.txt
: Renomme fichier.txt en "nouveauNom.txt"cp fichier.txt sousDossier/
: Copie fichier.txt dans le répertoire "sousDossier"mv fichier.txt sousDossier/
: Déplace fichier.txt vers le répertoire "sousDossier"rm fichier.txt
: Supprime fichier.txt (Attention, pas de passage par la corbeille)rm -y fichier.txt
: Supprime en demandant confirmation
Manipulation de dossiers
mkdir nomDossier
: Crée un nouveau dossier "nomDossier"cp -R nomDossier ../
: Copie le dossier nomDossier dans le répertoire parentmv -R nomDossier ../
: Déplace le dossier nomDossier dans le répertoire parentrm -R nomDossier
: Supprime le dossier nomDossier
Analyses et manipulations un peu plus avancées
Comptage
wc fichier.txt
: Affiche le nombre de lignes, nombe de mots et nombre de caractères de fichiers.txtwc *.txt
: Affiche les infos pour chaque fichier .txtwc -l fichier.txt
: Affiche que le nombre de ligneswc -w
: Affiche que le nombre de motswc *.txt > monFichier.txt
: Enregistre l'output de wc dans monFichier.txt (💩?)ls -l monDossier | wc -l
: Compte les fichiers dans le répertoire monDossier
Tri
sort monFichier.txt
: Tri les lignes alphabétiquementsort -n monFichier.txt
: Tri numériquementsort -nr monFichier.txt
: Ordre numérique inversésort -d monFichier.txt
: Tri dictionnariquesort -f monFichier.txt
: Tri en ignorant la casse (majuscules/minuscules)sort -k 1 monTableau.csv
: Tri sur la colonne 1 (la première est 0)sort -k 1.5 monTableau.csv
: Tri sur le 5ème caractère de la colonne 1sort -n monFichier.txt | head -n 1
: Tri numériquement et affiche la première ligne
Manipulation de texte
cat texte.txt
: Affiche le contenu de texte.txtcat texte.txt | tr [a-z]éèàç [A-Z]ÉÈÀÇ
: Passe tout le contenu en majusculescat texte.txt | tr '''\n'
: Remplace toutes les espaces par des sauts de ligne (pour afficher un mot par ligne)cat texte.txt | tr '''\n' | sort
: Fait la même chose puis tri les motscat texte.txt | tr '''\n' | sort | uniq
: ...puis supprime les doublons dans la liste de motscat texte.txt | tr '''\n' | sort | uniq -c
: ...supprime les doublons et compte leur fréquencecat texte.txt | tr '''\n' | sort | uniq -d
: ...affiche les doublons uniquementcat texte.txt | tr '''\n' | sort | uniq -u
: ...affiche les hapax uniquementcat texte.txt | tr '''\n' | sort | uniq -c | grep "saucisson"
: ...recherche le mot "saucisson" dans la liste des mots du textecat texte.txt | tr '''\n' | sort | uniq -c | sort -n
: ...tri la liste de mots par fréquencecat texte.txt | tr '''\n' | sort | uniq -c | sort -nr
: ...tri la liste de mots par fréquence inversecat texte.txt | tr '''\n' | rev | sort | uniq -c
: remplace les espaces par des sauts de ligne, puis renverse les mots, pour chercher les rimes et en fait une liste ordonnée avec fréquencecat texte.txt | tr '''\n' | rev | sort | rev | uniq -c
: fait une liste des mots ordonnée par rime
Concaténation de fichiers
cat file1.csv file2.csv > file3.csv
: Concatène verticale (file2 à la suite de file1) dans un nouveau fichier file3paste file1.csv file2.csv > file3.csv
: Concaténation horizontale (colonnes de file2 à la suite des colonnes de file1)pdfunite in-1.pdf in-2.pdf in-n.pdf out.pdf
: merger des fichiers pdf
Manipulation d'audio
nécessite le package ffmpeg :
ffmpeg -i filename.wav newfilename.mp3
: conversion d'un fichier wav en mp3.ffmpeg -i filename.wav -ar 44100 newfilename.mp3
: conversion d'un fichier .wav en .mp3 avec rééchantillonnage à 44.1kHzffmpeg -i filename.wav -b:a 320k newfilename.mp3
: conversion d'un fichier .wav en .mp3 en forçant le bitrate à 320kb/sffmpeg -i input.wav -filter:a "volume=0.5" output.wav
: baisser le volume de l'audio de 50% (plus d'options ici)
Manipulation de photos
nécessite le package imagemagick (sudo apt install imagemagick)
convert old_image -resize 50% new_image
: Réduire une photo de 50%.convert image_name.jpg image_name.png
: Convertir le format d'une image.
Manipulation de vidéo
ffmpeg -i video_lourde.mp4 -vcodec h264 -acodec aac video_compresse.mp4
: compression vidéo (codec vidéo h264, audio AAC)ffmpeg -i test.mp4 -c:v libvpx -crf 15 -b:v 1M -c:a libvorbis test.webm
: conversion vers webmffmpeg -i 'zoom séance 1 24.11.20 bis.mp4' -map a zoomAudio.wav
: extraction de l'audio d'une vidéo (format de sortie: wav)
Boucle sur plusieurs fichiers
for f in *.txt; do head -n 1 $f; done
: boucle sur tous les fichiers .txt du dossier courant, et on affiche juste la première ligne de chaque.for f in *.txt; do echo $f; head -n 1 $f; done
: pareil mais on affiche le nom du fichier avant.for f in audio/*.wav; do python wav2param.py $f; done
: lance un script python (wav2param.py) sur chaque fichier .wav du dossier audio/for f in *; ffmpeg -i $f $f.mp3; done
: convertit tous les fichiers du dossier en mp3.
Manipulation de PDF
pdfunite coucou.pdf mimi.pdf boubou.pdf output.pdf
: merger les fichiers pdf coucou mimi et boubou en un seul fichier output.pdfpdftk input.pdf cat 1 5 10-12 output output.pdf
: spliter un pdf et récupérer seulement les pages 1, 5 et 10 à 12pdftotext input.pdf output.txt
: extraction texte du contenu d'un pdfpdftotext -enc ASCII7 input.pdf output.txt
: extraction du contenu d'un pdf (2)lowriter --convert-to pdf fichier.docx
: convertir un docx en pdf
Autres commandes pratiques
rename 's/ /_/g' *
: remplace les espaces par des underscores dans les noms de fichiers
- ↑
Alt gr + 6
(Linux, Windows)Alt + l
(Mac)