Rumah > Tutorial sistem > LINUX > Cara mencari direktori di linux dari baris arahan

Cara mencari direktori di linux dari baris arahan

Lisa Kudrow
Lepaskan: 2025-03-18 09:07:11
asal
935 orang telah melayarinya

Cara mencari direktori di linux dari baris arahan

Tidak dapat mencari folder dalam sistem Linux? Jangan risau! Linux menyediakan alat baris arahan yang kuat untuk mencari direktori yang hilang. Alat yang paling biasa ialah perintah find , yang membolehkan anda mencari direktori berdasarkan pelbagai kriteria. Panduan ini akan memperkenalkan beberapa cara untuk mencari direktori dalam sistem Linux.

Pertama, kami akan menunjukkan cara mencari direktori dengan nama. Kami kemudian akan menunjukkan bagaimana untuk mencari direktori yang paling baru diubahsuai dan yang diubahsuai pada hari yang lalu. Anda juga akan belajar bagaimana untuk mengenal pasti direktori yang lebih tua -yang diubah suai n hari yang lalu.

Seterusnya, kami akan menerangkan cara mencari direktori dalam julat kedalaman yang ditentukan menggunakan pilihan maxdepth dan mindepth . Anda akan belajar bagaimana untuk mencari direktori berdasarkan keizinan untuk direktori dan direktori yang mengandungi sejumlah fail tertentu.

Akhirnya, kami akan menerangkan cara mencari direktori kosong, yang sangat berguna untuk mengenal pasti bahagian -bahagian sistem fail yang tidak digunakan atau tidak perlu.

Sepanjang panduan, kami akan memberikan contoh praktikal untuk membantu anda memanfaatkan perintah find apabila menggunakan direktori di Linux.

Jadual Kandungan

  • Cari direktori dalam direktori semasa
  • Gunakan -nama untuk mengabaikan kes
  • Cari direktori dan fail
  • Cari direktori yang diubah suai baru -baru ini
  • Cari direktori diubah suai pada hari yang lalu
  • Kenal pasti direktori yang lebih tua
  • Cari direktori dalam julat yang ditentukan
  • Cari direktori berdasarkan kebenaran direktori
  • Cari direktori yang mengandungi bilangan fail tertentu
  • Cari direktori kosong
  • Meringkaskan

Cari dengan nama direktori

Jika anda mengetahui nama direktori dan di mana carian bermula, gunakan arahan berikut:

 cari/jalan/ke/cari -jenis d -name "direktori_name"
Salin selepas log masuk

Ganti /path/to/search dengan laluan sebenar dan "directory_name" dengan direktori sasaran.

Contoh:

 $ cari ~/ -type d -name "Dokumen"
Salin selepas log masuk

Perintah ini mula mencari direktori yang dinamakan "dokumen" dari direktori rumah pengguna (~/).

Berikut adalah pecahan arahan:

  1. find ~/ : Mula mencari dari direktori rumah pengguna (~/).
  2. -type d : Beritahu find untuk mencari direktori (-ype d) dan bukannya fail biasa.
  3. -name "Documents" : Pilihan ini memberitahu find untuk mencari direktori bernama "Dokumen". Petikan di kedua -dua belah "dokumen" memastikan bahawa carian mencari nama yang tepat, bukan hanya direktori yang mengandungi perkataan "dokumen".

Oleh itu, arahan ini akan mencari direktori rumah pengguna dan semua subdirektori untuk mana -mana direktori yang dinamakan "dokumen". Jika mana -mana direktori ditemui, ia akan mencetak laluan penuh ke direktori tersebut.

Cari direktori dalam direktori semasa

Jika anda ingin memulakan carian anda dari direktori semasa dan bukannya direktori rumah (~/), anda hanya boleh meninggalkan ~/ bahagian perintah seperti berikut:

 $ cari. -Type d -name "Dokumen"
Salin selepas log masuk

Berikut adalah pecahan ciri untuk setiap pilihan:

  1. find . .
  2. -type d : Beritahu find untuk mencari direktori.
  3. -name "Documents" : Pilihan ini memberitahu find untuk mencari direktori bernama "Dokumen".

Perintah ini akan mencari direktori semasa dan semua subdirektori, cari mana -mana direktori yang dinamakan "dokumen", dan mencetak laluan penuh ke direktori tersebut.

Sebagai alternatif, anda juga boleh menggunakan pembolehubah $PWD , yang mewakili direktori kerja semasa seperti berikut:

 $ cari $ pwd -type d -name "dokumen"
Salin selepas log masuk

Kedua -dua arahan akan mencapai hasil yang sama, bermula dengan direktori semasa.

Gunakan -nama untuk mengabaikan kes

Ini adalah bendera yang sangat berguna dalam perintah find .

Kita boleh menggunakan pilihan -iname bukannya -name untuk melakukan carian kes -insensitif .

Berikut adalah contoh menggunakan -iname dan bukannya -name :

 $ cari. -Type d -iname "Dokumen"
Salin selepas log masuk

-iname "Documents" akan sepadan dengan direktori dengan nama seperti "dokumen", "dokumen", "dokumen", dll. Ini berguna jika anda tidak pasti mengenai kes tepat nama direktori.

Perbezaan utama antara -name dan -iname adalah:

  • -name melakukan carian sensitif kes, jadi ia hanya sepadan dengan direktori yang sama persis dengan corak yang disediakan.
  • -iname melakukan carian kes-insensitif, jadi ia akan sepadan dengan direktori tanpa mengira kesnya.

Anda juga boleh memasukkan istilah carian di liar seperti ini:

 $ cari. -Type d -iname "*Dokumen*"
Salin selepas log masuk

Perintah ini menyenaraikan semua direktori dalam direktori semasa (dan subdirektori) yang mengandungi "dokumen" dalam nama mereka.

Menggunakan -iname mungkin lebih mudah jika anda tidak tahu atau mengambil berat tentang kes tepat nama direktori yang anda cari.

Secara peribadi, apabila mencari sesuatu, saya lebih suka menggunakan pilihan -iname dalam perintah find .

Cari direktori dan fail

Jika anda mengeluarkan bahagian -type d dari arahan find , ia akan mencari fail dan direktori yang sepadan dengan kriteria lain seperti -name atau -iname pilihan.

Perintah adalah seperti berikut:

 $ cari. -Semaya "Dokumen"
Salin selepas log masuk

Inilah yang berlaku:

  1. Perintah find akan mencari direktori semasa (.) Dan semua subdirektori untuk mana -mana projek (fail dan direktori) bernama "dokumen" (kes tidak sensitif).
  2. Ia akan mengandungi direktori yang dinamakan "dokumen" dan mana -mana fail biasa yang dinamakan "dokumen" dalam hasilnya.

Oleh itu, output perintah ini akan termasuk:

  • Mana -mana direktori yang dinamakan "Dokumen", "Dokumen", "Dokumen", dll.
  • Sebarang fail biasa yang dinamakan "dokumen", "dokumen", "dokumen", dll.

Memadam bahagian -type d akan menjadikan carian lebih luas kerana ia akan mengandungi direktori dan fail yang sepadan dengan corak nama yang ditentukan.

Ini berguna jika anda tidak pasti jika entri "dokumen" yang anda cari adalah direktori atau fail, dan anda ingin mencari semua kejadian.

Walau bagaimanapun, jika anda secara khusus mencari direktori yang dinamakan "dokumen", lebih baik untuk menyimpan pilihan -type d untuk menyempitkan carian anda.

Cari direktori yang diubah suai baru -baru ini

Untuk menyenaraikan direktori yang diubah suai dalam julat tarikh tertentu, gunakan -newermt dua kali.

Sebagai contoh, untuk mencari direktori yang dibuat atau diubah suai antara 15 Mac, 2024 dan 15 April, 2024 (tidak termasuk dua hari ini), anda boleh menggunakan:

 $ cari/path/to/search -type d -newermt "2024-03-15"! -Newermt "2024-04-15"
Salin selepas log masuk

Berikut adalah pecahan arahan di atas:

  1. find /path/to/search : Beritahu perintah find untuk mula mencari dari direktori /path/to/search .
  2. -type d : Pilihan ini memastikan bahawa perintah find hanya mencari direktori, bukan fail biasa.
  3. -newermt "2024-03-15" : Pilihan ini memberitahu find untuk mengandungi hanya direktori yang dikemas kini (dicipta atau diubahsuai) daripada 15 Mac, 2024.
  4. ! find ! -newermt "2024-04-15" : !

Gabungan pilihan ini menyebabkan direktori carian find dibuat atau diubahsuai pada atau selepas 15 Mac, 2024, tetapi sebelum 15 April, 2024.

Sebagai contoh, ini berguna jika anda ingin mencari semua direktori yang dibuat atau diubahsuai dalam tempoh masa tertentu (contohnya, untuk sandaran atau audit).

Cari direktori diubah suai pada hari yang lalu

Untuk mencari direktori yang telah diubah suai pada hari yang lalu, gunakan -mtime .

Perintah berikut akan mencari direktori yang diubah suai dalam 7 hari yang lalu di bawah ~/ projek/ direktori.

 $ cari ~/ projek/ -type d -mtime -7
Salin selepas log masuk

Inilah yang setiap bahagian perintah itu:

  1. find ~/Projects/ : Beritahu perintah find untuk mula mencari dari ~/ projek/ direktori.
  2. -type d : Pilihan ini memastikan bahawa perintah find hanya mencari direktori, bukan fail biasa.
  3. -mtime -7 : Pilihan ini memberitahu find untuk memasukkan hanya direktori yang telah diubah suai dalam 7 hari yang lalu ("m" dalam "-mtime" bermaksud "mengubah masa").

Prinsip kerja -mtime -7 bahagian adalah seperti berikut:

  • Tanda minus (-) bermaksud "kurang daripada" atau "pada masa lalu".
  • Nombor 7 mewakili bilangan hari.

Sebagai contoh, ini akan sangat berguna jika anda ingin mencari semua direktori baru yang telah dibuat atau dikemas kini baru -baru ini dalam ~/ projek/ direktori (mungkin untuk sandaran atau penjejakan).

Kenal pasti direktori yang lebih tua

Untuk mencari direktori yang diubah suai n hari yang lalu (iaitu (cari direktori yang telah n hari yang lalu), gunakan -mtime dengan tanda tambah.

Sebagai contoh, arahan berikut akan mencari direktori yang diubahsuai 7 hari yang lalu di bawah ~/ projek/ direktori.

 $ cari ~/ projek/ -type d -mtime 7
Salin selepas log masuk

Dalam erti kata lain, ia akan mencari direktori yang belum diubah suai (dicipta, dikemas kini, atau diakses) dalam 7 hari yang lalu.

Opsyen -mtime 7 memberitahu find untuk memasukkan hanya direktori yang masa pengubahsuaiannya ("m" dalam "-mtime") lebih besar daripada 7 hari yang lalu.

Oleh itu, arahan ini boleh digunakan untuk mencari direktori yang belum disentuh atau diubahsuai untuk tempoh masa, yang berguna untuk mengenal pasti direktori yang tidak digunakan atau ketinggalan zaman atau melaksanakan tugas seperti penyelenggaraan/pembersihan struktur direktori projek.

Bagaimanakah kita tahu jika direktori sebenarnya diubah suai x hari yang lalu? Sangat mudah.

Untuk mengesahkan bahawa direktori yang dijumpai oleh arahan find diubahsuai 7 hari yang lalu, anda boleh menggunakan perintah stat untuk memaparkan masa pengubahsuaian untuk setiap direktori.

 $ cari ~/ projek/ -type d -mtime 7 -exec stat -c ' %n %y' {} \;
Salin selepas log masuk

Berikut adalah penjelasan mengenai arahan di atas:

  1. find ~/Projects/ -type d -mtime 7 : Bahagian arahan ini sama seperti sebelumnya, cari direktori 7 hari yang lalu.
  2. -Exec stat stat ' find -exec stat -c '%n %y' {} \; -exec
  • stat -c '%n %y' : Perintah stat memaparkan nama fail (%n) direktori dan masa yang diubah suai terakhir (%y).
  • {} : Ini adalah pemegang tempat, digantikan oleh direktori semasa yang dijumpai oleh find .
  • \; : Ini menamatkan perintah -exec .

Apabila anda menjalankan arahan ini, ia memaparkan laluan dan masa yang diubah suai setiap direktori 7 hari yang lalu. Ini membolehkan anda mengesahkan bahawa direktori yang dijumpai memang diubahsuai 7 hari yang lalu.

Berikut adalah contoh output:

 <code>/home/ostechnix/Projects/Python 2024-03-22 14:18:14.958042173 0530 /home/ostechnix/Projects/Vim 2024-03-22 14:05:55.887041168 0530</code>
Salin selepas log masuk

Masa pengubahsuaian yang ditunjukkan dalam output akan membantu anda mengesahkan bahawa direktori itu lebih lama daripada 7 hari, seperti yang dikehendaki oleh perintah find asal.

Cari direktori dalam julat yang ditentukan

Kami boleh mencari direktori dalam julat kedalaman yang ditentukan menggunakan pilihan maxdepth dan mindepth perintah find .

Berikut adalah sintaks:

 cari/jalan/ke/carian -mindepth x -maxdepth y -jenis d
Salin selepas log masuk

Izinkan saya menerangkan apa pilihan dalam perintah ini:

  1. find /path/to/search : Beritahu perintah find untuk mula mencari dari direktori /path/to/search .
  2. -mindepth X : Pilihan ini menetapkan tahap kedalaman minimum direktori untuk dimasukkan ke dalam hasil carian. Nilai x mewakili bilangan minimum tahap direktori bermula dari titik permulaan.
  3. -maxdepth Y : Pilihan ini menetapkan tahap kedalaman maksimum direktori untuk dimasukkan ke dalam hasil carian. Nilai y mewakili bilangan maksimum tahap direktori bermula dari titik permulaan.
  4. -type d : Pilihan ini memastikan bahawa perintah find hanya mencari direktori, bukan fail biasa.

Perhatikan bahawa pilihan -mindepth harus ditentukan sebelum parameter lain, termasuk -type .

Sebagai contoh, untuk mencari direktori sekurang -kurangnya 2 lapisan dalam tetapi sehingga 4 lapisan dalam direktori /Projects , anda boleh menggunakan arahan berikut:

 $ cari ~/projek -mindepth 2 -maxdepth 4 -jenis d
Salin selepas log masuk

Perintah ini mencari direktori (termasuk) sekurang -kurangnya 2 lapisan dalam dan sehingga 4 lapisan jauh berbanding dengan direktori /Projects .

Anda boleh menyesuaikan nilai x dan y mengikut keperluan khusus anda. Sebagai contoh, jika anda ingin mencari direktori yang betul -betul 3 lapisan dalam, anda boleh menggunakan:

 $ cari ~/projek -mindepth 3 -maxdepth 3 -jenis d
Salin selepas log masuk

Ini hanya akan mengandungi direktori dalam 3 lapisan dalam hasil carian.

Menggunakan maxdepth dan mindepth dalam kombinasi dapat membantu anda menyempitkan carian anda ke pelbagai kedalaman direktori tertentu, yang sangat berguna untuk menganjurkan dan menguruskan sistem fail.

Cari direktori berdasarkan kebenaran direktori

Untuk mencari direktori berdasarkan keizinan direktori, anda boleh menggunakan perintah find dengan pilihan -perm .

 cari/jalan/ke/cari -jenis d -perm<permission_specification></permission_specification>
Salin selepas log masuk

Menggantikan /path/to/search dengan direktori yang anda mahu mula cari dan<permission_specification></permission_specification> Gantikan dengan kebenaran yang diperlukan. Anda boleh menentukan keizinan menggunakan notasi oktal.

Izinkan saya menunjukkan beberapa contoh.

Untuk mencari semua direktori dengan kebenaran 755 (iaitu pemilik adalah RWX, kumpulan dan lain -lain adalah RX) dalam direktori semasa:

 $ cari. -Type d -perm 755
Salin selepas log masuk

Untuk mencari direktori di mana pemilik mempunyai kebenaran RWX, kumpulan itu mempunyai kebenaran RX, dan yang lain tidak mempunyai kebenaran:

 $ cari. -Type d -perm 750
Salin selepas log masuk

Untuk mencari semua direktori dalam ~/projek di mana pemilik mempunyai keizinan dan kumpulan dan lain -lain mempunyai kebenaran rx:

 $ cari ~/projek ~ -type d -perm -005
Salin selepas log masuk

Anda boleh menyesuaikan mengikut keperluan khusus anda<permission_specification></permission_specification> . Di samping itu, anda boleh menggunakan pilihan -maxdepth dan -mindepth untuk mengawal kedalaman carian jika diperlukan.

Cari direktori yang mengandungi bilangan fail tertentu

Untuk mencari direktori yang mengandungi bilangan fail tertentu, anda boleh menggunakan arahan find , wc dan Bash dalam kombinasi.

Contoh:

Perintah berikut mencari direktori yang berlaku mengandungi 4 fail dalam direktori semasa dan subdirektori, dan mencetak jalan penuh ke direktori tersebut.

 $ cari.
Salin selepas log masuk

Mari kita pecahkan langkah demi langkah:

  1. find . -type d : Mula mencari direktori (bukan fail) dari direktori semasa (.).
  2. -exec bash -c '...' _ {} \; : Bahagian ini menggunakan exec find untuk melaksanakan skrip bash tersuai untuk setiap direktori yang dijumpai.
  3. if [ $(find "$1" -maxdepth 1 -type f | wc -l) -eq 4 ]; then echo "$1"; fi
  • $(find "$1" -maxdepth 1 -type f | wc -l) : Bahagian ini mengira bilangan fail (bukan direktori) dalam direktori semasa ("$ 1"). Opsyen -maxdepth 1 memastikan bahawa ia hanya mengira fail dalam direktori semasa, bukan fail dalam subdirektori.
  • [ ... -eq 4 ] : Ini memeriksa sama ada bilangan fail dalam direktori semasa adalah tepat 4.
  • then echo "$1"; fi

Sebagai contoh, ini berguna jika anda mempunyai satu set direktori tertentu yang harus mengandungi sejumlah fail dan anda ingin dengan cepat mengenal pasti mana -mana direktori yang tidak memenuhi kriteria tersebut.

Cari direktori kosong

Untuk mencari direktori kosong, gunakan bendera -empty :

 cari/jalan/ke/cari -jenis d -empty
Salin selepas log masuk

Sebagai contoh, untuk mencari direktori kosong dalam direktori "kerja", jalankan:

 $ cari ~/ kerja/ -type d -empty
Salin selepas log masuk

Ingatlah untuk menyesuaikan jalan yang diperlukan.

Meringkaskan

Dalam panduan ini, anda telah mempelajari beberapa teknik untuk mencari direktori dalam sistem Linux menggunakan arahan find .

Anda boleh mencari dengan nama, kali terakhir perubahan, atau dengan bilangan fail dalaman. Anda juga boleh mencari folder atau folder kosong dengan keizinan tertentu.

Dengan mempelajari cara menggunakan pilihan seperti maxdepth , mindepth , dan size , anda boleh meningkatkan carian anda untuk memberi tumpuan kepada direktori tertentu yang anda perlukan.

Oleh itu, jangan panik pada masa akan datang folder hilang! Gunakan arahan find ini untuk mengesannya dan simpan fail yang dianjurkan.

Atas ialah kandungan terperinci Cara mencari direktori di linux dari baris arahan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan