Lister les noms des fichiers dans un dossier et ses sous-dossiers
Objectif : avec une seule ligne de commandes Linux, lister récursivement les noms des fichiers dans un dossier, les trier alphabétiquement dans le dossier et dans chaque sous-dossier. Les noms des sous-dossiers sont aussi triés alphabétiquement, après les noms des fichiers.
Les tests sont faits sur les fichiers contenus dans cette archive.
Avec la commande ls, vous obtenez le résultat voulu mais le format d’affichage ne convient pas :
$ ls -AR --sort=version --format=single-column ./DISQUETTE\ 1/*
…
./DISQUETTE 1/XDOSSYS/CONFAD:
1206194.93L
1206298.91L
1206319.92L
1206420.96L
1206444.91L
1399016.91L./DISQUETTE 1/XDOSSYS/ENG:
SYMBOLS.KEY./DISQUETTE 1/XDOSSYS/EXE:
DTSXPC.EXE
ENG
FRE
GER…
Vous pouvez obtenir le résultat voulu avec les commandes tree et find. Listez d’abord alphabétiquement les noms du dossier et de ses sous-dossiers, avec tree. Ensuite, dans le dossier et dans chacun de ses sous-dossier, listez alphabétiquement les noms des fichiers et des sous-dossiers, toujours avec tree. Enfin, dans la liste globale obtenue, supprimez les noms du dossier et de ses sous-dossiers, avec find :
$ tree -daifv --noreport ./DISQUETTE\ 1/|xargs -I {} tree -aifv -L 1 --noreport {}|xargs -I {} find {} -prune -type f
./DISQUETTE 1/AUTOEX.ENG
./DISQUETTE 1/AUTOEX.FRE
./DISQUETTE 1/AUTOEX.GER
./DISQUETTE 1/AUTOEX.ITA
./DISQUETTE 1/AUTOEX.SPA
./DISQUETTE 1/AUTSPEC.ENG
./DISQUETTE 1/AUTSPEC.FRE
./DISQUETTE 1/AUTSPEC.GER
./DISQUETTE 1/AUTSPEC.ITA
./DISQUETTE 1/AUTSPEC.SPA
./DISQUETTE 1/CONF.ENG
./DISQUETTE 1/CONF.FRE
./DISQUETTE 1/CONF.GER
./DISQUETTE 1/CONF.ITA
./DISQUETTE 1/CONF.SPA
./DISQUETTE 1/CONFIRM.ENG
./DISQUETTE 1/CONFIRM.FRE
./DISQUETTE 1/CONFIRM.GER
./DISQUETTE 1/CONFIRM.ITA
./DISQUETTE 1/CONFIRM.SPA
./DISQUETTE 1/CXDOSPRJ.ENG
./DISQUETTE 1/CXDOSPRJ.FRE
./DISQUETTE 1/CXDOSPRJ.GER
./DISQUETTE 1/CXDOSPRJ.ITA
./DISQUETTE 1/CXDOSPRJ.SPA
./DISQUETTE 1/CXDOSSYS.ENG
./DISQUETTE 1/CXDOSSYS.FRE
./DISQUETTE 1/CXDOSSYS.GER
./DISQUETTE 1/CXDOSSYS.ITA
./DISQUETTE 1/CXDOSSYS.SPA
./DISQUETTE 1/ENDD.ENG
./DISQUETTE 1/ENDD.FRE
./DISQUETTE 1/ENDD.GER
./DISQUETTE 1/ENDD.ITA
./DISQUETTE 1/ENDD.SPA
./DISQUETTE 1/IDENT.VER
./DISQUETTE 1/INSTALL.EXE
./DISQUETTE 1/ISAUTO.ENG
./DISQUETTE 1/ISAUTO.FRE
./DISQUETTE 1/ISAUTO.GER
./DISQUETTE 1/ISAUTO.ITA
./DISQUETTE 1/ISAUTO.SPA
./DISQUETTE 1/ISLAST.ENG
./DISQUETTE 1/ISLAST.FRE
./DISQUETTE 1/ISLAST.GER
./DISQUETTE 1/ISLAST.ITA
./DISQUETTE 1/ISLAST.SPA
./DISQUETTE 1/LANGINST.ENG
./DISQUETTE 1/LANGXPRO.ENG
./DISQUETTE 1/LANGXPRO.FRE
./DISQUETTE 1/LANGXPRO.GER
./DISQUETTE 1/LANGXPRO.ITA
./DISQUETTE 1/LANGXPRO.SPA
./DISQUETTE 1/REP.ENG
./DISQUETTE 1/REP.FRE
./DISQUETTE 1/REP.GER
./DISQUETTE 1/REP.ITA
./DISQUETTE 1/REP.SPA
./DISQUETTE 1/SELOG.REF
./DISQUETTE 1/TEUNPACK.EXE
./DISQUETTE 1/XPRIM.PRE
./DISQUETTE 1/XDOSSYS/CONFIG.XPR
./DISQUETTE 1/XDOSSYS/INSTALL.DAT
./DISQUETTE 1/XDOSSYS/CONFAD/1206194.93L
./DISQUETTE 1/XDOSSYS/CONFAD/1206298.91L
./DISQUETTE 1/XDOSSYS/CONFAD/1206319.92L
./DISQUETTE 1/XDOSSYS/CONFAD/1206420.96L
./DISQUETTE 1/XDOSSYS/CONFAD/1206444.91L
./DISQUETTE 1/XDOSSYS/CONFAD/1399016.91L
./DISQUETTE 1/XDOSSYS/ENG/SYMBOLS.KEY
./DISQUETTE 1/XDOSSYS/EXE/DTSXPC.EXE
./DISQUETTE 1/XDOSSYS/EXE/KEYMGR.EX@
./DISQUETTE 1/XDOSSYS/EXE/LANCEUR.BAT
./DISQUETTE 1/XDOSSYS/EXE/PROMPROG.EX@
./DISQUETTE 1/XDOSSYS/EXE/TE.BAT
./DISQUETTE 1/XDOSSYS/EXE/USERINT.EX@
./DISQUETTE 1/XDOSSYS/EXE/WARM.COM
./DISQUETTE 1/XDOSSYS/EXE/WHAT.EX@
./DISQUETTE 1/XDOSSYS/EXE/ENG/TE_BOOT.BAT
./DISQUETTE 1/XDOSSYS/EXE/FRE/TE_BOOT.BAT
./DISQUETTE 1/XDOSSYS/EXE/GER/TE_BOOT.BAT
./DISQUETTE 1/XDOSSYS/EXE/ITA/TE_BOOT.BAT
./DISQUETTE 1/XDOSSYS/EXE/SPA/TE_BOOT.BAT
./DISQUETTE 1/XDOSSYS/FRE/SYMBOLS.KEY
./DISQUETTE 1/XDOSSYS/GER/SYMBOLS.KEY
./DISQUETTE 1/XDOSSYS/HLP/KEYMGR.BW@
./DISQUETTE 1/XDOSSYS/HLP/KEYMGR.CO@
./DISQUETTE 1/XDOSSYS/HLP/PROMPROG.BW@
./DISQUETTE 1/XDOSSYS/HLP/PROMPROG.CO@
./DISQUETTE 1/XDOSSYS/HLP/USERINT.BW
./DISQUETTE 1/XDOSSYS/HLP/USERINT.COL
./DISQUETTE 1/XDOSSYS/HLP/ENG/KEYMGR.DH@
./DISQUETTE 1/XDOSSYS/HLP/ENG/KEYMGR.LN@
./DISQUETTE 1/XDOSSYS/HLP/ENG/PROMPROG.LN@
./DISQUETTE 1/XDOSSYS/HLP/ENG/QHD.DHP
./DISQUETTE 1/XDOSSYS/HLP/ENG/QHD.LNG
./DISQUETTE 1/XDOSSYS/HLP/ENG/U000.HL@
./DISQUETTE 1/XDOSSYS/HLP/ENG/U001.HL@
./DISQUETTE 1/XDOSSYS/HLP/ENG/U002.HL@
./DISQUETTE 1/XDOSSYS/HLP/ENG/U003.HL@
./DISQUETTE 1/XDOSSYS/HLP/ENG/U004.HL@
./DISQUETTE 1/XDOSSYS/HLP/ENG/U005.HL@
./DISQUETTE 1/XDOSSYS/HLP/ENG/USERINT.DH@
./DISQUETTE 1/XDOSSYS/HLP/ENG/USERINT.LN@
./DISQUETTE 1/XDOSSYS/HLP/FRE/F000.HL@
./DISQUETTE 1/XDOSSYS/HLP/FRE/F001.HL@
./DISQUETTE 1/XDOSSYS/HLP/FRE/F002.HL@
./DISQUETTE 1/XDOSSYS/HLP/FRE/F003.HL@
./DISQUETTE 1/XDOSSYS/HLP/FRE/F004.HL@
./DISQUETTE 1/XDOSSYS/HLP/FRE/F005.HL@
./DISQUETTE 1/XDOSSYS/HLP/FRE/KEYMGR.DH@
./DISQUETTE 1/XDOSSYS/HLP/FRE/KEYMGR.LN@
./DISQUETTE 1/XDOSSYS/HLP/FRE/PROMPROG.LN@
./DISQUETTE 1/XDOSSYS/HLP/FRE/QHD.DHP
./DISQUETTE 1/XDOSSYS/HLP/FRE/QHD.LNG
./DISQUETTE 1/XDOSSYS/HLP/FRE/USERINT.DH@
./DISQUETTE 1/XDOSSYS/HLP/FRE/USERINT.LN@
./DISQUETTE 1/XDOSSYS/HLP/GER/D000.HL@
./DISQUETTE 1/XDOSSYS/HLP/GER/D001.HL@
./DISQUETTE 1/XDOSSYS/HLP/GER/D002.HL@
./DISQUETTE 1/XDOSSYS/HLP/GER/D003.HL@
./DISQUETTE 1/XDOSSYS/HLP/GER/D004.HL@
./DISQUETTE 1/XDOSSYS/HLP/GER/D005.HL@
./DISQUETTE 1/XDOSSYS/HLP/GER/KEYMGR.DH@
./DISQUETTE 1/XDOSSYS/HLP/GER/KEYMGR.LN@
./DISQUETTE 1/XDOSSYS/HLP/GER/PROMPROG.LN@
./DISQUETTE 1/XDOSSYS/HLP/GER/QHD.DHP
./DISQUETTE 1/XDOSSYS/HLP/GER/QHD.LNG
./DISQUETTE 1/XDOSSYS/HLP/GER/USERINT.DH@
./DISQUETTE 1/XDOSSYS/HLP/GER/USERINT.LN@
./DISQUETTE 1/XDOSSYS/HLP/ITA/I000.HL@
./DISQUETTE 1/XDOSSYS/HLP/ITA/I001.HL@
./DISQUETTE 1/XDOSSYS/HLP/ITA/I002.HL@
./DISQUETTE 1/XDOSSYS/HLP/ITA/I003.HL@
./DISQUETTE 1/XDOSSYS/HLP/ITA/I004.HL@
./DISQUETTE 1/XDOSSYS/HLP/ITA/I005.HL@
./DISQUETTE 1/XDOSSYS/HLP/ITA/KEYMGR.DH@
./DISQUETTE 1/XDOSSYS/HLP/ITA/KEYMGR.LN@
./DISQUETTE 1/XDOSSYS/HLP/ITA/PROMPROG.LN@
./DISQUETTE 1/XDOSSYS/HLP/ITA/QHD.DHP
./DISQUETTE 1/XDOSSYS/HLP/ITA/QHD.LNG
./DISQUETTE 1/XDOSSYS/HLP/ITA/USERINT.DH@
./DISQUETTE 1/XDOSSYS/HLP/ITA/USERINT.LN@
./DISQUETTE 1/XDOSSYS/HLP/SPA/E000.HL@
./DISQUETTE 1/XDOSSYS/HLP/SPA/E001.HL@
./DISQUETTE 1/XDOSSYS/HLP/SPA/E002.HL@
./DISQUETTE 1/XDOSSYS/HLP/SPA/E003.HL@
./DISQUETTE 1/XDOSSYS/HLP/SPA/E004.HL@
./DISQUETTE 1/XDOSSYS/HLP/SPA/E005.HL@
./DISQUETTE 1/XDOSSYS/HLP/SPA/KEYMGR.DH@
./DISQUETTE 1/XDOSSYS/HLP/SPA/KEYMGR.LN@
./DISQUETTE 1/XDOSSYS/HLP/SPA/PROMPROG.LN@
./DISQUETTE 1/XDOSSYS/HLP/SPA/QHD.DHP
./DISQUETTE 1/XDOSSYS/HLP/SPA/QHD.LNG
./DISQUETTE 1/XDOSSYS/HLP/SPA/USERINT.DH@
./DISQUETTE 1/XDOSSYS/HLP/SPA/USERINT.LN@
./DISQUETTE 1/XDOSSYS/ITA/SYMBOLS.KEY
./DISQUETTE 1/XDOSSYS/REFERE/PROM.REF
./DISQUETTE 1/XDOSSYS/REFERE/STANDARD.TE
./DISQUETTE 1/XDOSSYS/SPA/SYMBOLS.KEY
./DISQUETTE 1/XDOSSYS/XDOSMAT/PRJ7.PRJ
./DISQUETTE 1/XDOSSYS/XDOSMAT/USER.CTX
./DISQUETTE 1/XDOSSYS/XDOSMAT/VV4.VOL
./DISQUETTE 1/XDOSSYS/XDOSMAT/PRJ7/1060-TSX.STA
./DISQUETTE 1/XDOSSYS/XDOSMAT/PRJ7/CCX7.STA
./DISQUETTE 1/XDOSSYS/XDOSMAT/PRJ7/FTX417.STA
./DISQUETTE 1/XDOSSYS/XDOSMAT/PRJ7/FTX507.STA
./DISQUETTE 1/XDOSSYS/XDOSMAT/PRJ7/NUM7X0.STA
./DISQUETTE 1/XDOSSYS/XDOSMAT/PRJ7/NUM1040.STA
./DISQUETTE 1/XDOSSYS/XDOSMAT/PRJ7/NUM1060.STA
./DISQUETTE 1/XDOSSYS/XDOSMAT/PRJ7/PC.STA
./DISQUETTE 1/XDOSSYS/XDOSMAT/PRJ7/PMXV4.STA
./DISQUETTE 1/XDOSSYS/XDOSMAT/PRJ7/PMXV5.STA
./DISQUETTE 1/XDOSSYS/XDOSMAT/PRJ7/TSX17.STA
./DISQUETTE 1/XDOSSYS/XDOSMAT/PRJ7/TSX27-47.STA
./DISQUETTE 1/XDOSSYS/XDOSMAT/PRJ7/TSXV3.STA
./DISQUETTE 1/XDOSSYS/XDOSMAT/PRJ7/TSXV4.STA
./DISQUETTE 1/XDOSSYS/XDOSMAT/PRJ7/TSXV5.STA
./DISQUETTE 1/XDOSSYS/XDOSMAT/PRJ7/UNITLWAY.STA
./DISQUETTE 1/XDOSSYS/XDOSMAT/PRJ7/VAX.STA
./DISQUETTE 1/XDOSSYS/XDOSMAT/PRJ7/XBT.STA
./DISQUETTE 1/XINST/AUTOEXEC.BEG
./DISQUETTE 1/XINST/AUTOEXEC.END
./DISQUETTE 1/XINST/CONFIG.SYS
./DISQUETTE 1/XINST/APPEND/AUTOEXEC.BAT
./DISQUETTE 1/XINST/APPEND/CONFIG.SYS
Si vous connaissez une autre solution, n’hésitez pas à la publier en commentaire.