it-swarm-eu.dev

Elenca il file usando il comando ls in Linux con percorso completo

Molti scopriranno che si tratta di domande ripetute, ma ho già risposto a tutte le domande prima di questo argomento, ma nessuna ha funzionato per me.

Voglio stampare il nome completo del percorso del determinato formato di file usando il comando ls fino ad ora ho trovato un pezzo di codice che stamperà tutti i file nella directory ma non il percorso completo.

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

questo stamperà tutti i file in directory principale e subdiratory.

Produzione:

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

Voglio un risultato come:

  /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: Ho usato tutto questo ma non funziona con il mio codice in LUA.

quando ho usato con il mio codice mostra la directory sbagliata

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

non sta trovando i file in "/mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7" insted le sue stampe i file di directory root delle macchine.

28
Prakash.DTI

Puoi usare 

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

Cattura anche i file nascosti.

35
Totoro

Puoi provare questo:

ls -d $PWD/*
27
mgigirey

Per elencare tutto con il percorso completo, solo nella directory corrente

find $PWD -maxdepth 1

Come sopra ma corrisponde solo a un'estensione particolare, senza distinzione tra maiuscole e minuscole (file .sh in questo caso)

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

$ PWD è per la directory corrente, può essere sostituito con qualsiasi directory

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

maxdepth impedisce a find di entrare nelle sottodirectory, ad esempio puoi impostarlo su "2" anche per elencare gli elementi nei bambini. Basta rimuoverlo se ne hai bisogno ricorsivamente.

Per limitarlo ai soli file, puoi usare l'opzione -type f.

find $PWD -maxdepth 1 -type f
12
sdkks

Si potrebbe facilmente usare quanto segue per elencare solo i file:

ls -d -1 $PWD/*.*

il seguente per elencare le directory:

ls -d -1 $PWD/**

il seguente per elencare tutto (file/dir):

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

Altre opzioni utili:

-d Elenca le directory non il loro contenuto

-R ricorsivo 

-1 elenca un file per riga 

-l uso il formato di quotazione lunga

-un elenco di tutte le voci che iniziano con. e ..

-Un elenco completo ma non elencato implicito. e ..

per maggiori informazioni, digita quanto segue 

ls --help 
4
msoliman

Questo stampa tutti i file, in modo ricorsivo, dalla directory corrente.

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

Ho avuto questo problema, e io uso il seguente:

ls -dl $ PWD/* | grep $ PWD

Mi ha sempre dato la lista che ho voluto, ma il tuo chilometraggio può variare.

0
Bruce Staples

Questo ha funzionato per me:

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

Il comando ls stamperà solo il nome del file nella directory. Perché non fare qualcosa del genere

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

Questo stamperà la directory con il nome del file.

0
Leland Barton

C'è più di un modo per farlo, il più semplice penso sarebbe:

find /mnt/mediashare/net/192.168.1.220_STORAGE_1d1b7

anche questo dovrebbe funzionare:

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

vuoi solo il percorso completo, perché non usare l'utilità che è stata pensata per quella una combinazione di readlink e grep dovrebbe farti ottenere quello che vuoi

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