Pertanyaan ini berbicara tentang menemukan direktori dalam direktori saat ini. Solusinya pada dasarnya:
ls -d */
Itu hebat, tetapi bagaimana saya bisa dengan mudah mendaftar symlink? Apakah saya harus menggunakan sesuatu seperti
find . -xtype l -d 1
(intended to find symlinks max depth 1 - doesn't work)
Atau ada cara yang lebih mudah? Bisakah l digunakan untuk ini?
man find
acara yang-d
merupakan sinonim untuk-depth
(untuk kompatibilitas dengan FreeBSD, NetBSD, MacOS X dan OpenBSD.), Yaitu. tidak sama dengan-maxdepth
. . .-depth
Proses isi setiap direktori sebelum direktori itu sendiriJawaban:
Di zsh (tambahkan
N
di dalam tanda kurung untuk menyertakan symlink yang namanya dimulai dengan a.
):Dengan sebagian besar
find
implementasi:Sesuai dengan POSIX:
Atau dengan lingkaran shell:
sumber
-prune
opsi, Anda harus menggunakanfind topdir ! -name topdir -prune
; jika tidak, direktori awal juga akan diabaikan.Ini bukan pada Mac, tapi
bekerja untukku.
sumber
Anda harus menggunakan
-type
dan tidak-xtype
:Standarnya adalah
-P
, jadi opsi -xtype akan mencoba menentukan file yang dihasilkan, bukan symlink itu sendiri. Sebenarnya, saya mendapatkan beberapa hasil positif, yang sepertinya seperti bug. The-P -xtype l
harus kembali benar (di symlink) IFF resultan itu sendiri merupakan link simbolik.Bisa juga menggunakan:
ls -FA | sed -ne 's/@//p'
yang hanya akan menampilkan symlink.sumber
sed -ne 's/@//p'
(dan bahkansed -ne 's/@$//p'
) bukan tes aman, karena versi pertama akan memberikan false positive ketika@
terjadi di mana saja dalam output ls , dan yang kedua akan mengembalikan postive palsu ketika nama file benar-benar berakhir@
Untuk mengetahui hanya file yang merupakan symlink di dalam direktori saat ini:
Ini akan secara rekursif mendaftar semua file symlink. Juga, ini menunjukkan file aktual yang ditunjuknya.
sumber