Se connecter avec
S'enregistrer | Connectez-vous

Trouver les fichiers d'un répertoire et autres actions...

Dernière réponse : dans Programmation

Salut à tous,

Je me retrouve devant un eproblème insoluble à mon niveau de connaissance, à part en passant pas une machine à gaz...

Alors, je dois lister les fichiers d'un répertoire et uniquement les fichiers (pas les répertoires fils).
Par example :
'MonRepertoire' contient les fichiers Fichier1.txt (date création : aujourd'hui), Fichier2.txt (date de création : hier) et un répertoire 'SousRepertoire'
Je veux ensuite récupérer par ordre décroissant de date de création chacun de ces fichiers afin de les traiter par une fonction. En continuant mon exemple, la fonction devra donc traiter d'abord Fichier2.txt, puis Fichier1.txt

J'ai donc testé 2 approches :
- la méthode du ls : je liste mes fichiers, puis je récupère avec un ll -rt le ls prend aussi en compte le répertoire, et lorsque je lance la fonction, ça plante. Solution de contournement : je déplace/supprime temporairement le sous-répertoire, mais c'est pas propre
- la méthode du find : la commande 'find -type f' me permet de récupérer la liste des fichiers (sans les sous-répertoire), mais je les récupère avec le chemin du répertoire, ce qui fait également planter ma fonction parce qu'elle s'attend à avoir directement le nom du fichier et non le chemin qui va avec (dans mon exemple, elle attend 'Fichier2.txt' et non '/MonRepertoire/Fichier2.txt')

A-t-on finalement une solution pour récupérer les noms de fichiers, sans le chemin du répertoire et sans les sous-répertoires?

Merci!
Bib's
Lassé par la pub ? Créez un compte
Expert Programmation

Bien tu utilise un système unix donc.
Déjà, si tu veux lister les répertoire: ls -d */

Sinon avec grep:
- pour ne récupérer que les répertoires: ls | grep /
- pour ne récupérer que les fichiers sans les sous-répertoires: ls | grep -v /

Pour y mettre aussi les fichiers cachés commençant par un ., il faut ajouter un -a
Lassé par la pub ? Créez un compte
Tom's guide dans le monde