Bagaimana cara menemukan direktori di linux?

453

Saya punya VPS dengan Suse Linux 10.3 .

Saya sudah masuk melalui SSH / dempul dan saya mencoba mencari di mana file web saya berada.

Karena saya mengunggah melalui FTP di direktori bernama httpdocs , saya berasumsi bahwa direktori ini ada di suatu tempat.

Pencarian google saya telah mengajarkan saya untuk melakukan ini, pergi ke direktori root saya dan ketik:

find httpdocs -type d

tetapi tertulis " Tidak ada file atau direktori ".

Bagaimana saya dapat menemukan direktori ini?

Edward Tanguay
sumber
4
Jika seseorang bertanya-tanya, perintah dalam pertanyaan menemukan semua direktori ( -type d) dalam entri direktori httpdocs(relatif terhadap direktori kerja saat ini, biasanya tetapi tidak harus direktori). Gagal dengan pesan kesalahan karena tidak ada entri direktori httpdocsdi direktori root sistem, dan karenanya tidak ada titik awal untuk pencarian.
Daniel Beck

Jawaban:

609

Ini:

find / -type d -name 'httpdocs'

parameter pertama "/" adalah tempat untuk melihat, dalam hal ini "/" itu adalah seluruh sistem.

-nama bisa -iname untuk mengabaikan kasus

juga -jenis tidak wajib

gunakan: man find untuk opsi lainnya

OldJim
sumber
2
find / -name 'httpdocs' bekerja sangat baik terima kasih
Edward Tanguay
91
Mungkin tidak masalah untuk pencarian sederhana, tetapi untuk perintah find yang lebih kompleks, perlu dicatat bahwa semuanya dievaluasi sesuai urutannya pada commandline. Jadi, Anda mungkin ingin memiliki -type d (direktori saja) sebelum -nama, untuk mempercepat. Sekali lagi, ini mungkin tidak terlalu menjadi masalah di sini, tetapi ketika melakukan pencarian yang lebih kompleks, ini dapat meningkatkan kecepatan pencarian secara signifikan.
Dominic Eidson
14
Sebenarnya, -nametes ini lebih cepat daripada sebagian besar tes lain karena -namecocok dengan daftar direktori, yang sudah dimuat dari disk, dan tes lain perlu melakukan a stat(2)untuk mendapatkan informasi file. Setelah pertama stat()panggilan untuk file, sebuah tes berikutnya dapatkan dari memori, misalnya: -type f -mtime -10.
Arcege
24
Jika Anda akan melakukan pencarian pada seluruh sistem file, terutama server, maka biasanya itu baik untuk digunakan nicesehingga penemuan itu tidak mengambil terlalu banyak sumber daya dari proses yang lebih penting:nice find / ...
Arcege
16
Saya akan menambahkan 2> / dev / null untuk menghindari agar hasil pencarian saya tidak disembunyikan di semua kesalahan izin.
Jason Yeo
63

perintah ini akan memberi Anda apa yang Anda cari:

find / -type d -name httpdocs

yang akan mencari dari root server Anda untuk direktori dengan nama httpdocs atau jika Anda hanya ingin mencari dari direktori saat ini ganti '/' dengan '.'

Perintah lain yang dapat Anda coba adalah menemukan Anda akan melakukan sesuatu seperti:

locate httpdocs
Zypher
sumber
cari httpdocs memberi tahu saya "temukan: perintah tidak ditemukan"
Edward Tanguay
4
Bagi mereka yang menggunakan perintah "temukan" (mengingat bahwa itu ada di sistem Anda), pastikan bahwa basis data yang dicari itu mutakhir; biasanya beberapa pekerjaan cron mengurusnya. Jika tidak, jalankan "updatedb" (menjadi root). Kemudian jalankan "cari <somefile>" Anda. Ini diperlukan untuk menemukan file / dir yang baru ditambahkan.
David Ramirez
+1 untuk temukan. Ini jauh lebih cepat tetapi hanya jika indeksnya mutakhir. Untungnya, sesuatu seperti "httpdocs" tidak akan sering mengubah lokasi. Jika Anda berencana berulang kali mencari file di mesin, ada baiknya beberapa menit yang dibutuhkan untuk mengatur pekerjaan cron yang diperbarui.
Doug Harris
1
Juga dalam banyak kasus, temukan akan mengembalikan terlalu banyak hasil karena semua 100 ribu file dalam direktori itu akan muncul. Dalam kasus khusus ini jika setiap pengguna memiliki httpdocs mereka sendiri dengan 100 atau 1000 file hasil yang diinginkan OP mungkin akan hilang.
Jistanidiot
+1 untuk cari ... Saya memperbarui basis data saya sehingga perintah ini sangat berguna ... Ide bagus.
nicorellius
27
find / -type d -name httpdocs 2> /dev/null

Ini akan menghilangkan semua pesan kesalahan yang kemungkinan Anda (baca, selalu) dapatkan ketika tidak melakukan ini sebagai pengguna root. Akan merekomendasikan melakukannya dengan cara ini.

pengguna2940456
sumber
2
The 2> /dev/nullpilihan adalah sangat membantu. Kalau tidak, akan sulit untuk melihat hasil yang diinginkan ...
Gottlieb Notschnabel
13

Sangat penting untuk mengetahui parameter -iname untuk mencari pola "case-sensitive" dan penggunaan wildcard: *,?, Dll.

Dua contoh:

Cari semua file dari / root yang berisi string "Linux", tidak sensitif huruf:

find  /root -type f -iname "*linux*"

Cari semua direktori dari / root yang berisi string "Linux", tidak peka huruf besar-kecil:

find  /root -type d -iname "*linux*"

Diambil dari sini:

http://www.sysadmit.com/2015/12/linux-buscar-ficheros-directorios-con-find.html

LunaSeven
sumber
Pertanyaan ini adalah tentang bagaimana menemukan direktori yang namanya Anda kenal, bukan bagaimana menemukan direktori yang Anda kenal (kira-kira). Selain itu, jawaban yang diterima (dari lebih dari 6 tahun yang lalu!) Sudah menyebutkan -inamesebagai alternatif yang tidak peka terhadap kasus -name.
G-Man
9

Anda hampir memilikinya. sintaks yang benar adalah:

find / -type d -name httpdocs

Direktori kemungkinan berada di bawah /var/www/

chrisbunney
sumber
itu memberitahu saya "jalan harus mendahului ekspresi"
Edward Tanguay