249 votes

Lister les fichiers de manière récursive dans Linux CLI avec un chemin relatif au répertoire courant

Ceci est similaire à cette question mais je veux inclure le chemin relatif au répertoire actuel dans unix. Si je peux faire ce qui suit :

ls -LR | grep .txt

Mais il n'inclut pas les chemins complets. Par exemple, j'ai la structure de répertoire suivante :

test1/file.txt
test2/file1.txt
test2/file2.txt

Le code ci-dessus renverra :

file.txt
file1.txt
file2.txt

Comment puis-je faire en sorte qu'il inclue les chemins relatifs au répertoire actuel en utilisant les commandes nix standard ?

343voto

Glomek Points 12183

Utilisez trouver :

find . -name \*.txt -print

Sur les systèmes qui utilisent GNU find, comme la plupart des distributions GNU/Linux, vous pouvez laisser de côté le paramètre -print.

76voto

Stephen Irons Points 321

Utiliser l'arbre, avec -f (chemin complet) et -i (pas de lignes d'indentation)

tree -if --noreport .
tree -if --noreport directory/

Vous pouvez ensuite utiliser grep pour filtrer ceux que vous voulez.

26voto

Sam Hoice Points 1766

Essayez find . Vous pouvez chercher exactement dans la page de manuel, mais c'est un peu comme ça :

find [start directory] -name [what to find]

Ainsi, pour votre exemple

find . -name "*.txt"

devrait vous donner ce que vous voulez.

11voto

Sherm Pendley Points 10822

Vous pourriez utiliser find à la place :

find . -name '*.txt'

4voto

h-dima Points 31
DIR=your_path
find $DIR | sed 's:""$DIR""::'

sed" effacera "votre_chemin" de tous les résultats de "find". Et vous obtiendrez un chemin relatif à 'DIR'.

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