Liste des fichiers utilisant la commande ls sous Linux avec le chemin complet

beaucoup constateront qu'il s'agit de questions répétitives, mais j'ai passé en revue toutes les questions posées auparavant sur ce sujet, mais aucune n'a fonctionné pour moi.

je veux imprimer le nom du chemin complet du format de fichier en utilisant la commande ls jusqu'à présent j'ai trouvé un morceau de code qui va imprimer tous les fichiers dans le 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

ceci imprimera tout le fichier dans le répertoire racine et le sous-répertoire.

Sortie:

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

je veux sortie de la forme:

  /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 dans LUA.

quand j'utilise mon code, il affiche le 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 les fichiers dans "/mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7 " insteted its prints the machines root directory files.

26
demandé sur bummi 2014-12-07 09:33:15

9 réponses

Vous pouvez utiliser

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

il attrapera aussi les fichiers cachés.

29
répondu Totoro 2014-12-07 06:48:30

Vous pouvez essayer ceci:

ls -d $PWD/*
24
répondu mgigirey 2017-07-04 03:52:42

Pour l'inscription de tout avec chemin d'accès 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 (.sh files in this case)

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

$PWD est Pour 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 d'aller dans les sous-répertoires, par exemple, vous pouvez le mettre à "2" pour lister des articles dans les enfants aussi bien. Retirez simplement si vous en avez besoin récursive.

Pour la limiter aux seuls fichiers, pouvez utiliser -type f option.

find $PWD -maxdepth 1 -type f
12
répondu sdkks 2016-03-06 01:35:22

Vous pouvez facilement utilisez la commande suivante pour répertorier uniquement les fichiers:

ls -d -1 $PWD/*.*

la suite de la liste de répertoires:

ls -d -1 $PWD/**

la suite de la liste de tous les éléments (fichiers et répertoires):

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

Plus d'options utiles:

-d liste des répertoires non à leur contenu

- R récursive

-1 liste un fichier par ligne

- l utiliser le format de la liste longue

-une liste de toutes les entrées en commençant avec . et. .

-une liste tout mais ne pas énumérer implicite . et. .

pour plus d'information, tapez simplement le

ls --help 
4
répondu msoliman 2016-04-06 11:15:12

cela imprime tous les fichiers, de façon récursive, à partir du répertoire courant.

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
répondu 2015-03-25 03:05:00

ls commande imprimer uniquement le nom du fichier dans le répertoire. Pourquoi ne pas faire quelque chose comme

print("/mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7/" + i)

imprimer le répertoire avec le nom de fichier.

0
répondu Leland Barton 2014-12-07 06:40:32

il y a plus d'une façon de faire cela, la plus facile je pense serait:

find /mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7

ceci devrait aussi fonctionner:

(cd /mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7; ls | xargs -i echo `pwd`/{})
0
répondu Jose Rey 2014-12-07 06:54:23

j'ai eu ce problème, et j'utilise le code suivant :

ls-dl $PWD / * / grep $PWD

il m'a toujours obtenu la liste que j'ai voulu, mais votre kilométrage peut varier.

0
répondu Bruce Staples 2017-02-09 23:53:44

Cela a fonctionné pour moi:

ls -rt -d -1 $PWD/{*,.*}
0
répondu HARSH PATHAK 2017-07-04 06:02:23