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
Jika anda mengetahui nama direktori dan di mana carian bermula, gunakan arahan berikut:
cari/jalan/ke/cari -jenis d -name "direktori_name"
Ganti /path/to/search
dengan laluan sebenar dan "directory_name"
dengan direktori sasaran.
Contoh:
$ cari ~/ -type d -name "Dokumen"
Perintah ini mula mencari direktori yang dinamakan "dokumen" dari direktori rumah pengguna (~/).
Berikut adalah pecahan arahan:
find ~/
: Mula mencari dari direktori rumah pengguna (~/).-type d
: Beritahu find
untuk mencari direktori (-ype d) dan bukannya fail biasa.-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.
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"
Berikut adalah pecahan ciri untuk setiap pilihan:
find .
.
-type d
: Beritahu find
untuk mencari direktori.-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"
Kedua -dua arahan akan mencapai hasil yang sama, bermula dengan direktori semasa.
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"
-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*"
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
.
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"
Inilah yang berlaku:
find
akan mencari direktori semasa (.) Dan semua subdirektori untuk mana -mana projek (fail dan direktori) bernama "dokumen" (kes tidak sensitif).Oleh itu, output perintah ini akan termasuk:
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.
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"
Berikut adalah pecahan arahan di atas:
find /path/to/search
: Beritahu perintah find
untuk mula mencari dari direktori /path/to/search
.-type d
: Pilihan ini memastikan bahawa perintah find
hanya mencari direktori, bukan fail biasa.-newermt "2024-03-15"
: Pilihan ini memberitahu find
untuk mengandungi hanya direktori yang dikemas kini (dicipta atau diubahsuai) daripada 15 Mac, 2024.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).
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
Inilah yang setiap bahagian perintah itu:
find ~/Projects/
: Beritahu perintah find
untuk mula mencari dari ~/ projek/ direktori.-type d
: Pilihan ini memastikan bahawa perintah find
hanya mencari direktori, bukan fail biasa.-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:
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).
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
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' {} \;
Berikut adalah penjelasan mengenai arahan di atas:
find ~/Projects/ -type d -mtime 7
: Bahagian arahan ini sama seperti sebelumnya, cari direktori 7 hari yang lalu.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>
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.
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
Izinkan saya menerangkan apa pilihan dalam perintah ini:
find /path/to/search
: Beritahu perintah find
untuk mula mencari dari direktori /path/to/search
.-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.-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.-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
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
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.
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>
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
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
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
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.
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.
Mari kita pecahkan langkah demi langkah:
find . -type d
: Mula mencari direktori (bukan fail) dari direktori semasa (.).-exec bash -c '...' _ {} \;
: Bahagian ini menggunakan exec
find
untuk melaksanakan skrip bash tersuai untuk setiap direktori yang dijumpai.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.
Untuk mencari direktori kosong, gunakan bendera -empty
:
cari/jalan/ke/cari -jenis d -empty
Sebagai contoh, untuk mencari direktori kosong dalam direktori "kerja", jalankan:
$ cari ~/ kerja/ -type d -empty
Ingatlah untuk menyesuaikan jalan yang diperlukan.
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!