Actions

Cours

Différences entre versions de « Manipulation de fichiers avec Bash »

De GBLL, TAL, ALAO, etc.

 
(13 versions intermédiaires par 2 utilisateurs non affichées)
Ligne 113 : Ligne 113 :
 
* {{code|cat file1.csv file2.csv > file3.csv|bash}} :  Concatène verticale (file2 à la suite de file1) dans un nouveau fichier file3
 
* {{code|cat file1.csv file2.csv > file3.csv|bash}} :  Concatène verticale (file2 à la suite de file1) dans un nouveau fichier file3
 
* {{code|paste file1.csv file2.csv > file3.csv|bash}} :  Concaténation horizontale (colonnes de file2 à la suite des colonnes de file1)
 
* {{code|paste file1.csv file2.csv > file3.csv|bash}} :  Concaténation horizontale (colonnes de file2 à la suite des colonnes de file1)
 +
* {{code|pdfunite in-1.pdf in-2.pdf in-n.pdf out.pdf|bash}} : merger des fichiers pdf
  
 
=== Manipulation d'audio ===
 
=== Manipulation d'audio ===
 +
{{encart|nécessite le package ffmpeg :
 +
* https://www.tophebergeur.com/blog/comment-installer-ffmpeg-sous-linux-et-ses-distributions/
 +
* https://manual.audacityteam.org/man/installing_ffmpeg_for_windows.html}}
 
* {{code|ffmpeg -i filename.wav newfilename.mp3|bash}} : conversion d'un fichier wav en mp3.
 
* {{code|ffmpeg -i filename.wav newfilename.mp3|bash}} : conversion d'un fichier wav en mp3.
* {{code|ffmpeg -i filename.wav -ar 44100 newfilename.mp3|bash}} : rééchantillonnage à 44.1kHz
+
** {{code|ffmpeg -i filename.wav -ar 44100 newfilename.mp3|bash}} : conversion d'un fichier .wav en .mp3 avec rééchantillonnage à 44.1kHz
*ffmpeg -i filename.wav -b:a 320k newfilename.mp3 : changement du bitrate à 320kb/s
+
** {{code|ffmpeg -i filename.wav -b:a 320k newfilename.mp3|bash}} : conversion d'un fichier .wav en .mp3 en forçant le [[wfr:bitrate|bitrate]] à 320kb/s
 +
** <pre>ffmpeg -i input.wav -filter:a "volume=0.5" output.wav</pre> : baisser le volume de l'audio de 50% ([https://trac.ffmpeg.org/wiki/AudioVolume plus d'options ici])
 +
 
 +
=== Manipulation de photos ===
 +
{{encart|nécessite le package imagemagick (sudo apt install imagemagick)}}
 +
** {{code|convert old_image -resize 50% new_image|bash}} : Réduire une photo de 50%.
 +
** {{code|convert image_name.jpg image_name.png|bash}} : Convertir le format d'une image.
  
 
=== Manipulation de vidéo ===
 
=== Manipulation de vidéo ===
 
* {{code|ffmpeg -i video_lourde.mp4 -vcodec h264 -acodec aac video_compresse.mp4|bash}} : compression vidéo (codec vidéo h264, audio AAC)
 
* {{code|ffmpeg -i video_lourde.mp4 -vcodec h264 -acodec aac video_compresse.mp4|bash}} : compression vidéo (codec vidéo h264, audio AAC)
 +
* {{code|ffmpeg -i test.mp4 -c:v libvpx -crf 15 -b:v 1M -c:a libvorbis test.webm|bash}} : conversion vers webm
 
* {{code|ffmpeg -i 'zoom séance 1 24.11.20 bis.mp4' -map a zoomAudio.wav|bash}} : extraction de l'audio d'une vidéo (format de sortie: wav)
 
* {{code|ffmpeg -i 'zoom séance 1 24.11.20 bis.mp4' -map a zoomAudio.wav|bash}} : extraction de l'audio d'une vidéo (format de sortie: wav)
  
Ligne 129 : Ligne 140 :
 
* {{code|for f in *; ffmpeg -i $f $f.mp3; done|bash}} : convertit tous les fichiers du dossier en mp3.
 
* {{code|for f in *; ffmpeg -i $f $f.mp3; done|bash}} : convertit tous les fichiers du dossier en mp3.
  
 +
=== Manipulation de PDF ===
 +
* {{code|pdfunite coucou.pdf mimi.pdf boubou.pdf output.pdf|bash}} : merger les fichiers pdf coucou mimi et boubou en un seul fichier output.pdf
 +
* {{code|pdftk input.pdf cat 1 5 10-12 output output.pdf|bash}} : spliter un pdf et récupérer seulement les pages 1, 5 et 10 à 12
 +
* {{code|pdftotext input.pdf output.txt|bash}} : extraction texte du contenu d'un pdf
 +
* {{code|pdftotext -enc ASCII7 input.pdf output.txt|bash}} : extraction du contenu d'un pdf (2)
 +
* {{code|lowriter --convert-to pdf fichier.docx|bash}} : convertir un docx en pdf
  
 
=== Autres commandes pratiques ===
 
=== Autres commandes pratiques ===
 
* {{code|rename 's/ /_/g' *|bash}} : remplace les espaces par des underscores dans les noms de fichiers
 
* {{code|rename 's/ /_/g' *|bash}} : remplace les espaces par des underscores dans les noms de fichiers
 
  
  
 
[[Catégorie:Mémo_technique]]
 
[[Catégorie:Mémo_technique]]

Version actuelle datée du 14 septembre 2022 à 14:16

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 :


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 :

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])

Commandes basiques de navigation ⛵

  • pwd : Affiche le chemin absolu depuis la racine jusqu'au rép. courant
  • cd <chemin> : Aller vers <chemin> (absolu ou relatif à partir du rép. courant)
    • cd sousDossier : Aller dans sousDossier
    • cd .. : Aller dans le répertoire parent
    • cd / : 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 courant
    • ls -F : idem, liste que les fichiers
    • ls -F /home : Liste les fichiers dans le rép. /home
    • ls -a : Liste également les fichiers et dossiers cachés
    • ls -l : Affiche le détail de chaque élément
    • ls -sh : Affiche la taille
    • ls -shS : Affiche la taille et trie par taille
    • ls -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 terminal
    • more 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 lignes
    • tail fichier.txt : Affiche les 10 dernières lignes
    • head -n 50 fichier.txt : Affiche les 50 premières lignes
    • vim 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.txt
    • cp 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 parent
  • mv -R nomDossier ../ : Déplace le dossier nomDossier dans le répertoire parent
  • rm -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.txt
    • wc *.txt : Affiche les infos pour chaque fichier .txt
    • wc -l fichier.txt : Affiche que le nombre de lignes
    • wc -w : Affiche que le nombre de mots
    • wc *.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étiquement
    • sort -n monFichier.txt : Tri numériquement
    • sort -nr monFichier.txt : Ordre numérique inversé
    • sort -d monFichier.txt : Tri dictionnarique
    • sort -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 1
    • sort -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.txt
  • cat texte.txt | tr [a-z]éèàç [A-Z]ÉÈÀÇ : Passe tout le contenu en majuscules
  • cat 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 mots
  • cat texte.txt | tr '''\n' | sort | uniq : ...puis supprime les doublons dans la liste de mots
  • cat texte.txt | tr '''\n' | sort | uniq -c : ...supprime les doublons et compte leur fréquence
  • cat texte.txt | tr '''\n' | sort | uniq -d : ...affiche les doublons uniquement
  • cat texte.txt | tr '''\n' | sort | uniq -u : ...affiche les hapax uniquement
  • cat texte.txt | tr '''\n' | sort | uniq -c | grep "saucisson" : ...recherche le mot "saucisson" dans la liste des mots du texte
  • cat texte.txt | tr '''\n' | sort | uniq -c | sort -n : ...tri la liste de mots par fréquence
  • cat texte.txt | tr '''\n' | sort | uniq -c | sort -nr : ...tri la liste de mots par fréquence inverse
  • cat 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équence
  • cat 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 file3
  • paste 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

  • 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.1kHz
    • ffmpeg -i filename.wav -b:a 320k newfilename.mp3 : conversion d'un fichier .wav en .mp3 en forçant le bitrate à 320kb/s
    • ffmpeg -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 webm
  • ffmpeg -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.pdf
  • pdftk input.pdf cat 1 5 10-12 output output.pdf : spliter un pdf et récupérer seulement les pages 1, 5 et 10 à 12
  • pdftotext input.pdf output.txt : extraction texte du contenu d'un pdf
  • pdftotext -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
  1. Alt gr + 6 (Linux, Windows) Alt + l (Mac)