Jawaban:
Tidak ada yang built-in untuk ditemukan, bahkan GNU menemukan. Anda dapat memposting proses find
untuk mengurutkan berdasarkan jumlah garis miring, misalnya dengan Perl:
find ... | perl -e 'print sort {$a=~s!/!/! <=> $b=~s!/!/!} <>'
<>
adalah daftar semua jalur input;$a =~ s!/!/!g
adalah jumlah garis miring $a
, yang kami gunakan sebagai kriteria sortir.Jika Anda dapat menggunakan zsh:
echo **/*(oe\''REPLY=${REPLY//[^\/]}'\')
**/*
daftar semua file dalam direktori dan subdirektori saat ini.oe
mengontrol urutan pengembalian pertandingan: mereka diurutkan berdasarkan nilai REPLY
setelah menjalankan kode di sini dalam tanda kutip untuk setiap pertandingan dengan REPLY
awalnya diatur ke jalur yang cocok.$REPLY
untuk menghapus semuanya kecuali garis miring. Jadi hasilnya terdiri dari semua pada kedalaman 1 (hasil kosong $REPLY
), lalu semuanya pada kedalaman 2 ( $REPLY
berakhir menjadi /
), kedalaman 3 ( //
), dll.Nggak
Buka pertanyaan ini di SO untuk pemecahan masalah.
Perasaan saya adalah bahwa Anda bisa. Ini melibatkan grep dan ini dan sebuah loop, tetapi saya menemukan itu bekerja dengan sangat baik, khusus untuk kasus Anda tentang menemukan tidak perlu diselesaikan.
Ini lebih intensif sumber daya karena:
Ini bagus karena:
#! / bin / bash kedalaman = 0 sambil menemukan -mindepth $ depth -maxdepth $ depth | grep '.' melakukan depth = $ ((depth + 1)) selesai
Anda juga dapat memasangnya dalam satu baris dengan cukup (?) Dengan mudah:
depth=0; while find -mindepth $depth -maxdepth $depth | grep --color=never '.'; do depth=$((depth + 1)); done
Tapi saya lebih suka skrip kecil daripada mengetik ...