web-dev-qa-db-fra.com

Liste des fichiers à l'aide de la commande ls sous Linux avec chemin complet

Beaucoup trouveront qu'il s'agit de questions répétitives, mais j’ai déjà parcouru toutes les questions posées à ce sujet, mais aucune n’a fonctionné pour moi.

Je veux imprimer le nom de chemin complet du format de fichier en utilisant la commande ls jusqu'à présent, j'ai trouvé un morceau de code qui imprimera tous les fichiers du répertoire, mais pas le chemin complet.

for i in io.popen("ls /mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7"):lines() do
  if string.find(i,"%.*$") then 
     print(i) 
  end
end

cela affichera tout le fichier dans le répertoire racine et sous-secondaire.

Sortie:

  0020111118223425.lvf
  2012
  2012 (2009).mp4
  3 Idiots
  Aashiqui 2
  Agneepath.mkv
  Avatar (2009)
  Captain Phillips (2013)
  Cocktail

Je veux une sortie comme:

  /mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7/0020111118223425.lvf           [File in Root Directory]
  /mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7/2012/2012.mkv
  /mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7/2012 (2009).mp4                [File in Root Directory]
  /mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7/3 Idiots/3 Idiots.mkv
  /mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7/Aashiqui 2/Aashiqui 2.mkv
  /mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7/Avatar (2009)/Avatar (2009).mkv
  /mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7/Captain Phillips (2013).mkv
  /mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7/Cocktail/Cocktail.mkv

EDIT: J'ai utilisé tout cela, mais cela ne fonctionne pas avec mon code en LUA.

quand j'ai utilisé avec mon code, il affiche un mauvais répertoire

for i in io.popen("ls -d $PWD/* /mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7"):lines() do
    if string.find(i,"%.*$") then
      print("/mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7/"..i)
    end
  end

ne trouve pas de fichiers dans "/mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7", il installe ses fichiers de répertoire racine de la machine.

28
Prakash.DTI

Vous pouvez utiliser 

  ls -lrt -d -1 $PWD/{*,.*}   

Il va également attraper les fichiers cachés.

35
Totoro

Vous pouvez essayer ceci:

ls -d $PWD/*
27
mgigirey

Pour tout lister avec un chemin complet, uniquement dans le répertoire courant

find $PWD -maxdepth 1

Comme ci-dessus mais ne correspond qu'à une extension particulière, insensible à la casse (fichiers .sh dans ce cas)

find $PWD -maxdepth 1 -iregex '.+\.sh'

$ PWD est pour le répertoire courant, il peut être remplacé par n’importe quel répertoire

mydir="/etc/sudoers.d/" ; find $mydir -maxdepth 1

maxdepth empêche find de se retrouver dans les sous-répertoires. Par exemple, vous pouvez le définir sur "2" pour répertorier les éléments dans les enfants également. Supprimez-le simplement si vous en avez besoin récursif.

Pour le limiter aux seuls fichiers, vous pouvez utiliser l'option -type f.

find $PWD -maxdepth 1 -type f
12
sdkks

Vous pouvez facilement utiliser les éléments suivants pour répertorier uniquement les fichiers:

ls -d -1 $PWD/*.*

les éléments suivants pour répertorier les répertoires:

ls -d -1 $PWD/**

les éléments suivants pour tout lister (fichiers/répertoires):

ls -d -1 $PWD/**/*

Plus d'options utiles:

-d répertorie les répertoires et non leur contenu

-R récursif 

-1 liste un fichier par ligne 

-l utilise le format de liste longue

-a liste toutes les entrées commençant par. et ..

-Une liste tout sauf la liste implicite. et ..

pour plus d'informations, tapez simplement ce qui suit 

ls --help 
4
msoliman

Cela imprime tous les fichiers de manière récursive à partir du répertoire en cours.

find "$PWD" | awk /.ogg/ # filter .ogg files by regex
find "$PWD" | grep .ogg  # filter .ogg files by term
find "$PWD" | ack .ogg   # filter .ogg files by regex/term using https://github.com/petdance/ack2
2
user2188875

J'ai eu ce problème et j'utilise les éléments suivants:

ls -dl $ PWD/* | grep $ PWD

J'ai toujours eu l'annonce que je voulais, mais votre kilométrage peut varier.

0
Bruce Staples

Cela a fonctionné pour moi:

ls -rt -d -1 $PWD/{*,.*}
0
HARSH PATHAK

Il y a plus d'une façon de faire cela, la plus facile à faire serait:

find /mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7

aussi cela devrait marcher:

(cd /mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7; ls | xargs -i echo `pwd`/{})
0
Jose Rey

vous voulez juste le chemin complet, pourquoi ne pas utiliser l'utilitaire pour cela

grep -R  '--include=*.'{mkv,mp4} ? | cut -d ' ' -f3  | xargs readlink -e # 
the question mark should be replaced with the right pattern - this is almost right
# this is probably the best solution remove the grep part if you dont need a filter
find <dirname> | grep .mkv | xargs readlink -e |  xargs ls --color=auto # only matroska files in the dir and subdirs with Nice color - also you can edit ls flags
find /mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7 | grep .mkv 
find /mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7 | xargs grep -R  '--include=*.'{mkv,mp4} . | cut -d ' ' -f3 # I am sure you can do more with grep 
readlink -f `ls` # in the directory or 

0
omen23 5