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

Beaucoup ont constaté que cela répète des questions, mais j’ai passé en revue toutes les questions posées sur ce sujet, mais aucune n’a fonctionné pour moi.

Je souhaite imprimer le chemin d’access 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 ssortingng.find(i,"%.*$") then print(i) end end 

Cela imprimera tout le fichier dans root diractory et subdiratory.

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

quand j’ai utilisé avec 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 ssortingng.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” insted ses imprime les fichiers du répertoire racine des machines.

Vous pouvez utiliser

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

Il va également attraper des fichiers cachés.

Vous pouvez essayer ceci:

 ls -d $PWD/* 

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

 find $PWD -maxdepth 1 

Identique à 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 la recherche d’entrer dans les sous-répertoires, par exemple, vous pouvez la définir sur “2” pour la liste des éléments dans les enfants également. Retirez-le simplement si vous en avez besoin récursif.

Pour le limiter aux fichiers, utilisez l’option -type f .

 find $PWD -maxdepth 1 -type f 

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 lister tout (fichiers / répertoires):

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

Options plus utiles:

-d répertoires de liste pas leur contenu

-R récursif

-1 liste un fichier par ligne

-l utiliser le format long listing

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

-Une liste mais pas de liste implicite. et ..

pour plus d’informations, tapez simplement ce qui suit

 ls --help 

Cela imprime tous les fichiers, récursivement, à 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 

La commande ls n’imprimera que 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)

Cela imprimera le répertoire avec le nom de fichier.

Il y a plus d’une façon de le faire, le plus simple serait selon moi:

 find /mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7 

aussi cela devrait fonctionner:

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

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

ls -dl $ PWD / * | grep $ PWD

Il m’a toujours donné le listing que j’ai voulu, mais votre kilométrage peut varier.

Cela a fonctionné pour moi:

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