Apakah ada cara untuk membatasi kedalaman daftar file rekursif di linux?
Perintah yang saya gunakan saat ini adalah:
ls -laR > dirlist.txt
Tapi saya punya sekitar 200 direktori dan masing-masing punya 10 direktori. Jadi itu akan memakan waktu terlalu lama dan terlalu banyak sumber daya sistem.
Yang saya benar-benar tertarik adalah informasi kepemilikan dan izin untuk subdirektori tingkat pertama:
drwxr-xr-x 14 root root 1234 Dec 22 13:19 /var/www/vhosts/domain1.co.uk
drwxr--r-- 14 jon root 1234 Dec 22 13:19 /var/www/vhosts/domain1.co.uk/htdocs
drwxr--r-- 14 jon root 1234 Dec 22 13:19 /var/www/vhosts/domain1.co.uk/cgi-bin
drwxr-xr-x 14 root root 1234 Dec 22 13:19 /var/www/vhosts/domain2.co.uk
drwxr-xrwx 14 proftp root 1234 Dec 22 13:19 /var/www/vhosts/domain2.co.uk/htdocs
drwxr-xrwx 14 proftp root 1234 Dec 22 13:19 /var/www/vhosts/domain2.co.uk/cgi-bin
drwxr-xr-x 14 root root 1234 Dec 22 13:19 /var/www/vhosts/domain3.co.uk
drwxr-xr-- 14 jon root 1234 Dec 22 13:19 /var/www/vhosts/domain3.co.uk/htdocs
drwxr-xr-- 14 jon root 1234 Dec 22 13:19 /var/www/vhosts/domain3.co.uk/cgi-bin
drwxr-xr-x 14 root root 1234 Dec 22 13:19 /var/www/vhosts/domain4.co.uk
drwxr-xr-- 14 jon root 1234 Dec 22 13:19 /var/www/vhosts/domain4.co.uk/htdocs
drwxr-xr-- 14 jon root 1234 Dec 22 13:19 /var/www/vhosts/domain4.co.uk/cgi-bin
EDIT:
Pilihan akhir perintah:
find -maxdepth 2 -type d -ls >dirlist
ls -la /var/www/vhosts/*
?Jawaban:
Lihat
-maxdepth
benderafind
Di sini saya menggunakan 1 sebagai kedalaman level maks,
-type d
berarti hanya menemukan direktori, yang kemudianls -ld
mencantumkan isi, dalam format panjang.sumber
-d
opsils
.find
bagian untuk menyelesaikan masalah utamanya. Pokoknya terima kasih saya menambahkannya.-print0
danxargs -0
banyak. Contoh:find . -maxdepth 1 -type d -print0 | xargs -0 ls -d
Manfaatkan
find
opsiSebenarnya tidak ada eksekutif dari
/bin/ls
dibutuhkan;Temukan memiliki opsi yang melakukan hal itu:
Untuk melihat hanya satu level subdirektori yang Anda minati, tambahkan
-mindepth
ke level yang sama dengan-maxdepth
:Gunakan format output
Ketika detail yang ditampilkan harus berbeda,
-printf
dapat menampilkan detail tentang file dalam format khusus; Untuk menampilkan izin simbolis dan nama pemilik file, gunakan-printf
dengan%M
dan%u
diformat
.Saya perhatikan nanti Anda menginginkan informasi kepemilikan penuh, yang termasuk grup. Gunakan
%g
dalam format untuk nama simbolik, atau%G
untuk id grup (seperti juga%U
untuk id pengguna numerik)Ini akan memberi Anda hanya detail yang Anda butuhkan, untuk file yang tepat.
Saya akan memberikan contoh yang menunjukkan nilai sebenarnya berbeda untuk pengguna dan grup:
(Diedit agar mudah dibaca: indentasi, persingkat baris terakhir)
Catatan tentang kinerja
Meskipun waktu eksekusi sebagian besar tidak relevan untuk jenis perintah ini, peningkatan kinerja cukup besar di sini untuk membuatnya layak untuk menunjukkannya:
Kita tidak hanya menghemat membuat proses baru untuk setiap nama - tugas besar - informasi bahkan tidak perlu dibaca, seperti yang
find
sudah diketahui.sumber
tree -L 2 -u -g -p -d
Mencetak pohon direktori dalam format yang cantik hingga kedalaman 2 (-L 2). Pengguna cetak (-u) dan grup (-g) dan izin (-p). Cetak hanya direktori (-d). tree memiliki banyak opsi berguna lainnya.
sumber
tree -L 2 xxx/
atautree -L 2 -d xxx/
cukup untuk beberapa kasus.Saya menemukan solusi mudah saat bermain ikan saya, yang sesuai dengan kebutuhan Anda dengan sempurna.
atau
sumber