GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara saya mendaftar secara rekursif semua direktori di suatu lokasi, luasnya terlebih dahulu?

Jika Anda ingin melakukannya menggunakan alat standar, pipeline berikut akan berfungsi:

find . -type d | perl -lne 'print tr:/::, " $_"' | sort -n | cut -d' ' -f2

Yaitu,

  1. temukan dan cetak semua direktori di sini secara mendalam terlebih dahulu
  2. hitung jumlah garis miring di setiap direktori dan tambahkan ke jalur
  3. urutkan berdasarkan kedalaman (mis., jumlah garis miring)
  4. ekstrak jalurnya saja.

Untuk membatasi kedalaman yang ditemukan, tambahkan argumen -maxdepth ke perintah find.

Jika Anda ingin direktori terdaftar dalam urutan yang sama yang menemukan keluarannya, gunakan "sort -n -s" alih-alih "sort -n"; flag "-s" menstabilkan pengurutan (yaitu, mempertahankan urutan masukan di antara item yang membandingkan secara setara).


find perintah mendukung -printf opsi yang mengenali banyak placeholder.

Salah satu placeholder tersebut adalah %d yang merender kedalaman jalur yang diberikan, relatif terhadap tempat find dimulai.

Oleh karena itu, Anda dapat menggunakan satu kalimat sederhana berikut:

find -type d -printf '%d\t%P\n' | sort -r -nk1 | cut -f2-

Ini cukup mudah, dan tidak bergantung pada perkakas berat seperti perl .

Cara kerjanya:

  • secara internal menghasilkan daftar file, masing-masing dirender sebagai baris dua bidang
  • kolom pertama berisi kedalaman, yang digunakan untuk (membalikkan) pengurutan numerik, lalu dipotong
  • hasilnya adalah daftar file sederhana, satu file per baris, dalam urutan terdalam-pertama

Linux
  1. Cara Mengetahui Daftar Semua Port Terbuka di Linux

  2. Cara Mencari dan Menghapus Direktori Secara Rekursif di Linux

  3. Cara Mendaftar atau Mengurutkan Semua File berdasarkan Ukuran di Linux

  1. Cara mendaftar semua file dan direktori secara rekursif

  2. Bagaimana cara mendaftar direktori secara rekursif di C di Linux?

  3. Bagaimana cara membuat daftar ukuran direktori dari semua direktori anak?

  1. Cara Menemukan File Di Linux Di Semua Direktori Secara Rekursif

  2. Bagaimana menemukan direktori terbesar atau file terbesar?

  3. Bagaimana cara membuat daftar file secara rekursif dan mengurutkannya berdasarkan waktu modifikasi?