locate filename
find -name '*filename*'
echo **/*filename*
ls -ld **/*filename*
(Baca terus untuk syarat dan ketentuan utama. Baca manual untuk cetakan halus.)
Daftar isi direktori adalah jenis fitur sekunder ls
. Pekerjaan utama ls
, salah satu yang paling rumit, adalah menyempurnakan tampilannya. (Lihatlah manual dan membandingkan jumlah pilihan yang berhubungan dengan memilih file apa untuk menampilkan vs jumlah pilihan yang kontrol apa informasi ke layar tentang setiap file dan bagaimana tampilan diformat. Hal ini berlaku baik dari ls GNU yang Anda' akan ditemukan di Linux, dan sistem lain dengan pilihan lebih sedikit, sejak awal .)
Mode default ls
adalah ketika Anda mengirimkannya direktori, itu daftar file dalam direktori itu. Jika Anda meneruskannya jenis file lain (file biasa, tautan simbolik, dll.), Itu hanya daftar file itu. (Ini berlaku untuk setiap argumen secara terpisah.) Opsi -d
memberitahu ls
tidak pernah turun ke direktori.
ls
memang memiliki opsi -R
yang memberitahu itu untuk membuat daftar direktori secara rekursif. Tetapi penerapannya terbatas, dan tidak memungkinkan banyak penyaringan pada output.
Alat pertama yang melakukan pencocokan pola adalah shell itu sendiri. Anda tidak memerlukan perintah lain: cukup ketik wildcard Anda dan Anda siap. Ini dikenal sebagai globbing .
echo *filename*
Secara tradisional, wildcard terbatas pada direktori saat ini (atau direktori yang ditunjukkan:) echo /some/where/*filename*
. A *
cocok dengan nama file apa pun, atau bagian mana pun dari nama file, tetapi *.txt
tidak akan cocok foo/bar.txt
. Kerang modern telah menambahkan pola **/
yang berarti "dalam direktori ini, atau dalam direktori apa pun di bawahnya (secara rekursif)". Dengan bash, untuk alasan kompatibilitas historis, fitur ini perlu diaktifkan secara eksplisit shopt -s globstar
(Anda dapat meletakkan baris ini di Anda ~/.bashrc
).
echo **/*filename*
The echo
perintah hanya menggemakan daftar nama file yang dihasilkan oleh shell kembali pada Anda. Sebagai pengecualian, jika tidak ada nama file yang cocok sama sekali, pola wildcard dibiarkan tidak berubah dalam bash (kecuali jika Anda mengatur shopt -s nullglob
, dalam hal ini pola meluas ke daftar kosong), dan zsh memberi sinyal kesalahan (kecuali Anda mengatur setopt nullglob
, atau setopt no_no_match
yang menyebabkan pola dibiarkan tidak berubah).
Anda mungkin masih ingin menggunakan ls
untuk opsi-opsinya. Misalnya, ls
dapat memberikan indikasi tentang sifat atau izin file (direktori, executable, dll.) Melalui warna. Anda mungkin ingin menampilkan tanggal, ukuran, dan kepemilikan file ls -l
. Lihat manual untuk lebih banyak opsi.
Perintah tradisional untuk mencari file di pohon direktori adalah find
. Muncul dengan banyak opsi untuk mengontrol file mana yang akan ditampilkan dan apa yang harus dilakukan dengan mereka. Misalnya, untuk mencari file yang namanya cocok dengan pola *filename*
di direktori saat ini dan subdirektori dan cetak namanya:
find /some/dir -name '*filename*' -print
-print
adalah tindakan (sebagian besar tindakan lain terdiri dari mengeksekusi perintah pada file); jika Anda tidak melakukan tindakan, -print
tersirat. Juga, jika Anda tidak menentukan direktori apa pun untuk dilintasi (di /some/dir
atas), direktori saat ini tersirat. Kondisi -name '*filename'
mengatakan untuk mendaftar (atau bertindak) hanya file yang namanya cocok dengan pola itu; ada banyak filter lain, seperti -mtime -1
mencocokkan file yang dimodifikasi dalam 24 jam terakhir. Terkadang Anda dapat menghilangkan tanda kutip -name '*filename*'
, tetapi hanya jika wildcard tidak cocok dengan file apa pun di direktori saat ini (lihat di atas). Singkatnya, bentuk singkatnya adalah
find -name '*filename*'
Alat lain yang bermanfaat ketika Anda tahu (bagian dari) nama file adalah locate
. Alat ini menanyakan basis data nama file. Pada sistem yang khas, ini disegarkan setiap malam. Keuntungan locate
lebih dari find /
itu adalah jauh lebih cepat. Kelemahannya adalah informasinya mungkin basi. Ada beberapa implementasi locate
yang berbeda dalam perilakunya pada sistem multi-pengguna: locate
program dasar hanya mengindeks file yang dapat dibaca untuk umum (Anda mungkin ingin menjalankan pendamping updatedb
untuk membuat database kedua yang mengindeks semua file di akun Anda); ada versi lain (mlocate, slocate) yang mengindeks semua file dan locate
program menyaring database untuk hanya mengembalikan file yang dapat Anda lihat.
locate filename
Terkadang Anda berpikir bahwa file disediakan oleh paket dalam distribusi Anda, Anda tahu (bagian dari) nama file tetapi bukan nama paket Anda, dan Anda ingin menginstal paket. Banyak distribusi menyediakan alat untuk itu. Di Ubuntu, itu apt-file search filename
. Untuk perintah yang setara pada sistem lain, periksa Pacman Rosetta .
ls
?