Buat show show slash setelah direktori?

19

Bagaimana saya bisa membuat perintah find memperlihatkan garis miring setelah direktori? Misalnya, saya ingin dirtampil sebagai dir/ganti dir. saya menggunakanfind . -print

Steven
sumber

Jawaban:

10

Portabel:

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

Jika Anda ingin membuat daftar direktori dan file secara terpisah (Anda dapat menggabungkan output dengan menyortir):

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

Dengan GNU find, lihat jawaban Shawn J. Goff .

Jika Anda ingin mengambil risiko karakter yang tidak dapat dicetak rusak bahkan ketika tidak menghasilkan ke terminal, lihat jawaban ddeimeke .

Di zsh: print -rl -- **/*(DM)( Duntuk memasukkan file dot, Muntuk menambah /direktori after)

Gilles 'SANGAT berhenti menjadi jahat'
sumber
Perintah pertama tidak mencetak garis miring untuk saya, tetapi yang kedua tidak.
Steven
15
find . \( -type d -printf "%p/\n" , -type f -print \)

Ini menggunakan perintah printf untuk memformat nama direktori dan cetak standar untuk yang lain.

Shawn J. Goff
sumber
Saya terus kagum pada fleksibilitas menemukan.
Shawn J. Goff
1
Catatan yang -printfkhusus untuk menemukan GNU.
Gilles 'SANGAT berhenti menjadi jahat'
Jawaban bagus. Saya suka bagaimana findargumen posisi memungkinkannya melakukan output lanjutan seperti ini. Namun, perhatikan bahwa tanpa spasi di sekitar koma, itu tidak akan berfungsi.
jimp
1
Berdasarkan jawaban ini dan Gilles ', saya datang dengan versi sederhana berikut:find . -type d -printf '%p/\n' -or -print
Teresa e Junior
8

Mungkin

find . -print0 | xargs -0 ls -Fd

juga merupakan pilihan.

Dari halaman manual Solaris:

-F Menandai direktori dengan garis miring (/), pintu dengan tanda lebih besar dari tanda (>), file yang dapat dieksekusi dengan tanda bintang (*), FIFO dengan bilah garis vertikal (|), tautan simbolis dengan tanda " at "sign (@), dan AF_UNIX soket keluarga alamat dengan tanda trailingequals (=). Mengikuti symlink yang disebut operan.

ddeimeke
sumber
@Gilles: Terima kasih untuk "d" ;-)
ddeimeke
ini meningkatkan jumlah syscalls
Paweł Polewicz