Fai trovare show slash dopo le directory?


19

Come posso fare in modo che il comando find mostri una barra dopo le directory? Ad esempio, voglio dirpresentarmi come dir/invece di dir. sto usandofind . -print

Risposte:


10

portabile:

find . -type d -exec sh -c 'printf "%s/\n" "$0"' {} \; -or -print

Se sei disposto a elencare directory e file separatamente (puoi unire l'output ordinando):

{ find . -type d -print | sed 's!$!/!'; find . \! -type d; } | sort

Con GNU find, vedi la risposta di Shawn J. Goff .

Se sei disposto a rischiare che i personaggi non stampabili vengano rovinati anche quando non vengono inviati a un terminale, vedi la risposta di ddeimeke .

In zsh: print -rl -- **/*(DM)( Dper includere file dot, Mper aggiungere una /directory after)


Il primo comando non ha stampato le barre finali per me, ma il secondo lo fa.
Steven,

15
find . \( -type d -printf "%p/\n" , -type f -print \)

Questo utilizza il comando printf per formattare i nomi delle directory e la stampa standard per il resto.


Continuo a essere sorpreso dalla flessibilità di trovare.
Shawn J. Goff,

1
Nota che -printfè specifico per GNU find.
Gilles 'SO-smetti di essere cattivo' il

Bella risposta. Mi piace il modo in cui findgli argomenti posizionali gli consentono di produrre output avanzati come questo. Tuttavia, si noti che senza gli spazi attorno alla virgola, non funzionerà.
jimp

1
Sulla base di questa risposta e di Gilles, mi è venuta in mente la seguente versione semplificata:find . -type d -printf '%p/\n' -or -print
Teresa e Junior,

8

Può essere

find . -print0 | xargs -0 ls -Fd

è anche un'opzione.

Da una pagina man di Solaris:

-F Contrassegna le directory con una barra (/) finale, le porte con un segno maggiore di (()), i file eseguibili con un asterisco finale (*), i file FIFO con una barra verticale finale (|), i collegamenti simbolici con una sequenza " at "sign (@), e AF_UNIX indirizzano i socket della famiglia con un segno finale uguale (=). Segue i collegamenti simbolici denominati operandi.


@Gilles: Grazie per la "d" ;-)
ddeimeke il

questo aumenta la quantità di syscalls
Paweł Polewicz,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.