BASH: Gérer des fichiers dont les noms comportent des espaces

Sous Unix, les fichiers comportant des espaces dans le nom sont très compliqués à gérer sachant que l'espace est interprété comme étant un séparateur.

Voici un exemple qui permet d'afficher la somme MD5 d'une liste de fichiers dont les noms comportent des espaces.

 # ls -1
20160524 leclerc 1264.pdf             
20160528 boulanger 3290.pdf           
20160528 cofiroute 620.pdf            
20160529 la mie caline 790.pdf        
20160529 le marché aux fleurs 2050.pdf
20160601 cordonnerie leclerc 1000.pdf
20160601 leclerc 990.pdf              
20160601 pharmacie 3830.pdf          

Les 8 fichiers ci-dessus comportent tous des espaces dans leurs noms.

 # while read f; do md5sum "$f"; done <<< $(ls)

57709e696d14838ceeff6500728d1569  20160524 leclerc 1264.pdf
9f870fb12e598c7345cb74c6db15afee  20160528 boulanger 3290.pdf
5bb71357967db84baf6ed4a5fb56c552  20160528 cofiroute 620.pdf
690471607356b9ea798d3d44d69f478d  20160529 la mie caline 790.pdf
519a250059f5d8bc93af22d2ae02512f  20160529 le marché aux fleurs 2050.pdf
a08e6094bc01a34c508761ebbdae6418  20160601 cordonnerie leclerc 1000.pdf
c8f36624113710939365dd0a4daeb30c  20160601 leclerc 990.pdf
387ce36eaa18d383bd1950ee17a4fdff  20160601 pharmacie 3830.pdf

La commande read, dans la boucle while, interprète correctement les noms de fichiers provenant de la commande ls.

warningNe pas oublier les 3 chevrons vers la gauche "<<<" entre la commande ls et la boucle while

Etiquettes: 

Ajouter un commentaire

Filtered HTML

  • Les adresses de pages web et de messagerie électronique sont transformées en liens automatiquement.
  • Tags HTML autorisés : <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Les lignes et les paragraphes vont à la ligne automatiquement.

Plain text

  • Aucune balise HTML autorisée.
  • Les adresses de pages web et de messagerie électronique sont transformées en liens automatiquement.
  • Les lignes et les paragraphes vont à la ligne automatiquement.
CAPTCHA
Cette question permet de s'assurer que vous êtes un utilisateur humain et non un logiciel automatisé de pollupostage.
CAPTCHA visuel
Entrez les caractères (sans espace) affichés dans l'image.