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/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:
CONFAD
CONFIG.XPR
ENG
EXE
FRE
GER
HLP
INSTALL.DAT
ITA
REFERE
SPA
XDOSMAT./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
ITA
KEYMGR.EX@
LANCEUR.BAT
PROMPROG.EX@
SPA
TE.BAT
USERINT.EX@
WARM.COM
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:
ENG
FRE
GER
ITA
KEYMGR.BW@
KEYMGR.CO@
PROMPROG.BW@
PROMPROG.CO@
SPA
USERINT.BW
USERINT.COL./DISQUETTE 1/XDOSSYS/HLP/ENG:
KEYMGR.DH@
KEYMGR.LN@
PROMPROG.LN@
QHD.DHP
QHD.LNG
U000.HL@
U001.HL@
U002.HL@
U003.HL@
U004.HL@
U005.HL@
USERINT.DH@
USERINT.LN@./DISQUETTE 1/XDOSSYS/HLP/FRE:
F000.HL@
F001.HL@
F002.HL@
F003.HL@
F004.HL@
F005.HL@
KEYMGR.DH@
KEYMGR.LN@
PROMPROG.LN@
QHD.DHP
QHD.LNG
USERINT.DH@
USERINT.LN@./DISQUETTE 1/XDOSSYS/HLP/GER:
D000.HL@
D001.HL@
D002.HL@
D003.HL@
D004.HL@
D005.HL@
KEYMGR.DH@
KEYMGR.LN@
PROMPROG.LN@
QHD.DHP
QHD.LNG
USERINT.DH@
USERINT.LN@./DISQUETTE 1/XDOSSYS/HLP/ITA:
I000.HL@
I001.HL@
I002.HL@
I003.HL@
I004.HL@
I005.HL@
KEYMGR.DH@
KEYMGR.LN@
PROMPROG.LN@
QHD.DHP
QHD.LNG
USERINT.DH@
USERINT.LN@./DISQUETTE 1/XDOSSYS/HLP/SPA:
E000.HL@
E001.HL@
E002.HL@
E003.HL@
E004.HL@
E005.HL@
KEYMGR.DH@
KEYMGR.LN@
PROMPROG.LN@
QHD.DHP
QHD.LNG
USERINT.DH@
USERINT.LN@./DISQUETTE 1/XDOSSYS/ITA:
SYMBOLS.KEY./DISQUETTE 1/XDOSSYS/REFERE:
PROM.REF
STANDARD.TE./DISQUETTE 1/XDOSSYS/SPA:
SYMBOLS.KEY./DISQUETTE 1/XDOSSYS/XDOSMAT:
PRJ7
PRJ7.PRJ
USER.CTX
VV4.VOL./DISQUETTE 1/XDOSSYS/XDOSMAT/PRJ7:
1060-TSX.STA
CCX7.STA
FTX417.STA
FTX507.STA
NUM7X0.STA
NUM1040.STA
NUM1060.STA
PC.STA
PMXV4.STA
PMXV5.STA
TSX17.STA
TSX27-47.STA
TSXV3.STA
TSXV4.STA
TSXV5.STA
UNITLWAY.STA
VAX.STA
XBT.STA./DISQUETTE 1/XINST:
APPEND
AUTOEXEC.BEG
AUTOEXEC.END
CONFIG.SYS./DISQUETTE 1/XINST/APPEND:
AUTOEXEC.BAT
CONFIG.SYS
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.
Texte et images © 2024 David VANTYGHEM, disponibles sous licence Creative Commons Attribution – Partage dans les Mêmes Conditions 4.0 International.