GNU/Linux >> Linux Esercitazione >  >> Linux

Come posso elencare i file con percorsi completi in Linux?

Usa lo find comando. Per impostazione predefinita, elencherà in modo ricorsivo tutti i file e le cartelle che discendono dalla directory corrente, con il percorso completo (relativo).

Se vuoi il percorso completo, usa:find "$(pwd)" .

  • Se vuoi limitarlo solo a file o cartelle, usa find -type f o find -type d , rispettivamente.
  • Se vuoi che si fermi a una certa profondità di directory, usa find -maxdepth 2 , ad esempio.

Leggi Finding Files per un manuale completo su GNU find , che è l'impostazione predefinita su Linux.


$ pwd
/home/victoria

$ find $(pwd) -maxdepth 1 -type f -not -path '*/\.*' | sort
/home/victoria/new
/home/victoria/new1
/home/victoria/new2
/home/victoria/new3
/home/victoria/new3.md
/home/victoria/new.md
/home/victoria/package.json
/home/victoria/Untitled Document 1
/home/victoria/Untitled Document 2

$ find . -maxdepth 1 -type f -not -path '*/\.*' | sed 's/^\.\///g' | sort
new
new1
new2
new3
new3.md
new.md
package.json
Untitled Document 1
Untitled Document 2

Note:

  • . :cartella corrente
  • rimuovi -maxdepth 1 per cercare in modo ricorsivo
  • -type f :trova i file, non le directory (d )
  • -not -path '*/\.*' :non restituire .hidden_files
  • sed 's/^\.\///g' :rimuovere il ./ anteposto dall'elenco dei risultati

Per completezza, il ls -lR / comando elencherà il nome di ciascun file, il tipo di file, i bit di modalità file, il numero di collegamenti fisici, il nome del proprietario, il nome del gruppo, la dimensione e il timestamp di ogni file (a cui si dispone dell'autorizzazione per accedere) dalla directory principale in basso. (l è per una lunga lista, cioè tutte quelle informazioni, R è ricorrere alle directory, / inizia dalla radice del filesystem.)

Ci sono un certo numero di parametri per rendere le informazioni di output più vicine a dir /S /A , ma devo ammettere che non riesco a capire come tradurre il /B .

Per informazioni utili, proverei:ls -lAFGR --si /

dove

  • l =lista lunga (come menzionato sopra)
  • A =quasi tutti i file (non include . e .. in ogni directory, ma mostra tutti i file nascosti)
  • F =mostra l'indicatore del file, (uno tra * per i file exe, / per le directory,@ per i collegamenti simbolici, | per FIFO, = per i socket e > per porte)
  • G =non mostrare informazioni sul gruppo (rimuovi questo se vuoi vederle)
  • R =elenca ricorsivamente directory (sottodirectory) e
  • --si =mostra la dimensione del file in formato leggibile dall'uomo, ad esempio 1M (dove 1M =1000B)

ls può fornire una sinossi più facile da leggere delle directory e dei file all'interno di tali directory, come find L'output di può essere difficile da scansionare quando i file sono contenuti all'interno di strutture di directory molto lunghe (che si estendono su più righe). Il corollario è che ogni file è elencato da solo (cioè senza informazioni sul percorso della directory) e potresti dover tornare indietro di un paio di pagine/schermate per trovare le directory in cui si trova un particolare file.

Inoltre, find non contiene le informazioni /A nel comando DIR. Ho suggerito una serie di attributi nel comando che ho mostrato (che casualmente mostrano l'utilità extra che ottieni da Linux su un certo sistema proprietario), ma se leggi il man e info pagine su ls , potrai vedere cosa includere o meno.


Linux
  1. Come trovare file con autorizzazioni SUID e SGID in Linux

  2. Come posso generare un elenco di file con il loro percorso assoluto in Linux?

  3. Come trovare file in formato DOS in un file system Linux

  4. Come trovare tutti i file che terminano con .rb con Linux?

  5. Itera su un elenco di file con spazi

Linux:come condividere file su una rete locale con woof

Come rinominare uno o più file in Linux

Come trovare file basati su timestamp in Linux

Come trovare i file modificati nelle ultime 24 ore in Linux

Come trovare file con il comando fd in Linux

Come comprimere un file in Linux