115 votes

Pour afficher uniquement le nom du fichier sans le chemin d'accès complet

ls /home/user/new/*.txt affiche tous les fichiers txt dans ce répertoire. Cependant, il affiche la sortie comme suit :

[me@comp]$ ls /home/user/new/*.txt
/home/user/new/file1.txt    /home/user/new/file2.txt    /home/user/new/file3.txt

et ainsi de suite.

Je veux exécuter la commande ls non pas à partir du répertoire /home/user/new/ donc je dois donner le nom complet du répertoire, mais je veux que la sortie soit seulement comme suit :

[me@comp]$ ls /home/user/new/*.txt
file1.txt    file2.txt    file3.txt 

Je ne veux pas le chemin entier. Seul le nom de fichier est nécessaire. Ce problème doit être résolu en utilisant la commande ls, car sa sortie est destinée à un autre programme.

181voto

fge Points 40850

ls touveux | xargs -n 1 basename

Est-ce que cela fonctionne pour vous ?

Sinon vous pouvez (cd /le/repertoire && ls) (oui, les parenthèses sont intentionnelles)

65voto

VRVigneshwara Points 751

Pas besoin de Xargs et tout ça, ls est plus que suffisant.

ls -1 *.txt

affiche ligne par ligne

20voto

pgl Points 2364

Il existe plusieurs façons d'y parvenir. Une serait quelque chose comme :

for filepath in /chemin/vers/repertoire/*
do
    filename=$(basename $filepath)

    ... tout ce que vous voulez faire avec le fichier ici
done

18voto

Dwayne Points 119

Utilisez la commande basename :

basename /home/user/new/*.txt

10voto

mrpraline Points 91

(cd dir && ls)

ne produira que les noms de fichiers dans dir. Utilisez ls -1 si vous voulez un par ligne.

(Modifié ; en && comme indiqué par le commentaire de Sactiw).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X