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.
9 réponses
Vous pouvez utiliser
ls -lrt -d -1 $PWD/{*,.*}
il attrapera aussi les fichiers cachés.
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
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
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
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.
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`/{})
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.