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.
Vous pouvez utiliser
ls -lrt -d -1 $PWD/{*,.*}
Il va également attraper les fichiers cachés.
Vous pouvez essayer ceci:
ls -d $PWD/*
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
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
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
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.
Cela a fonctionné pour moi:
ls -rt -d -1 $PWD/{*,.*}
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`/{})
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