Saya menulis skrip adalah ksh. Perlu menemukan semua nama direktori langsung di bawah direktori saat ini yang hanya berisi file, bukan subdirektori.
Saya tahu bahwa saya dapat menggunakan ls -alR
dan secara rekursif mengurai output untuk huruf pertama di bidang pertama ( d
untuk direktori). Saya pikir awk
adalah cara terbaik untuk menguraikan dan menemukan.
Misalnya, ls -al
output sederhana di direktori saat ini:
drwxr-xr-x 22 af staff 748 18 Mar 22:21 .
drwxr-xr-x 5 root admin 170 17 Mar 18:03 ..
-rw------- 1 af staff 3 17 Mar 16:37 .CFUserTextEncoding
drwxr-xr-x 5 af staff 170 17 Mar 17:12 Public
drwxr-xr-x 9 af staff 306 18 Mar 17:40 Sites
-rw------- 1 af staff 3 17 Mar 16:37 textd
…
Ada 2 direktori dalam output ini: Public
dan Sites
. Direktori Public
tidak mengandung subdirektori, tetapi Sites
tidak. Ada 3 subdirektori di Sites
. Jadi saya hanya perlu mengulangi direktori yang tidak mengandung direktori di dalamnya. Dalam kasus saya, ini hanya Sites
.
/some/directory
memiliki inode # 12345678, jika tidak memiliki sub-direktori, akan ada tepat 2 tautan keras ke inode itu:/some/directory/.
dan/some/directory
. Ini berfungsi apakah ada file dalam direktori atau tidak..
danfoo/..
memiliki nomor inode yang sama.)*/
cocok dengan subdirektori dari direktori saat ini. Ini termasuk tautan simbolis ke direktori, yang mungkin atau tidak Anda inginkan.Di ksh93, menambahkan
~(N)
di awal pola membuatnya diperluas ke daftar kosong jika tidak ada kecocokan. Tanpa ini, polanya tetap tidak berubah jika tidak ada kecocokan.Fungsi ksh93 berikut mencantumkan subdirektori dari direktori saat ini yang tidak berisi subdirektori atau tautan ke direktori.
sumber
jika saya tidak salah paham dengan Anda, Anda hanya ingin mencari file di direktori bukan di subdirektori. Jika ini niat Anda, inilah solusinya
jika Anda ingin mencari selain file biasa (seperti memblokir file perangkat, file perangkat karakter, dll.) lalu lihat halaman manual untuk
find
perintah dan cari jenis kata kunci pada halaman itu. Anda akan melihat tipe file yang berbeda, termasuk file dan direktori biasa dll.Semoga ini yang Anda cari
sumber