Saya perlu mencari file yang dimulai dengan nama tertentu. Mungkin ada banyak file yang dimulai dengan pola tertentu dan saya ingin mendaftar semua file yang ada di direktori.
58
Untuk melengkapi jawaban yang ada:
ls
Utilitas daftar direktori default ls
dapat digunakan dalam kombinasi dengan wildcard shell. Untuk mencari semua file dengan pola abc
:
ls abc* # list all files starting with abc---
ls *abc* # list all files containing --abc--
ls *abc # list all files ending with --abc
Perhatikan bahwa ekstensi file juga relevan untuk hasil pencarian.
tree
Jika kita perlu membuat daftar file dalam pohon direktori, kita juga dapat mengeluarkan tree
untuk mencari pola tertentu seperti:
tree -P 'abc*' # list directory tree of file starting with abc---
tree -l 'def*' # exclude files starting with def---
Dalam hal ini, tree
itu sendiri mendukung wildcard.
ls -l B*
menampilkan isi semua direktori dimulai denganB
bukan hanya nama direktori yang sesuai?ls
daftar direktori, itu membukanya, sama dengan melakukanls -l BirthdayPhotos
. Anda dapat menekan perilaku itu denganls -d B*
.B*
sebagai spesifikasi direktori?B*
memperluas untuk mencocokkan semua direktori yang dimulai denganB
sehingga Anda benar-benar melewatils
daftar direktori, sehingga membuka semuanya untuk Anda.ls -d ABC*
adalah apa yang penulis tanyakan. Juga komentar dalam cuplikan kode salah,ls abc*
daftar isi direktori dimulai dengan abc.Anda dapat menggunakan
find
perintah untuk mencari file dengan polaPerintah di atas akan mencari file yang dimulai dengan abc di bawah direktori kerja saat ini.
-name 'abc'
akan mencantumkan file yang sama persis. Misalnya: abcAnda juga bisa menggunakan
opsi dengan
find
perintah untuk mencari nama file menggunakan polasumber
Ada banyak cara untuk melakukannya, tergantung pada apa yang ingin Anda lakukan dengan mereka. Secara umum, jika Anda hanya ingin mendaftarkannya, Anda dapat melakukannya di terminal menggunakan:
find | grep '^\./ABC'
... dan ganti
ABC
dengan teks Anda.Untuk memahami perintah, mari kita uraikan sedikit:
find
daftar semua file di bawah direktori saat ini dan sub-direktori; menggunakannya sendiri hanya akan mendaftar semuanya di sana. Perhatikan bahwafind
output setiap file atau direktori dimulai dengan./
, menunjukkan bahwa jalurnya relatif terhadap direktori saat ini. Menyadari hal ini penting karena itu berarti kita akan mencari hasil yang dimulai dengan./ABC
dan bukan hanyaABC
.Karakter pipa
|
mengalihkan output dari satu perintah ke yang lain, dalam hal ini outputfind
diarahkan kegrep
. Ini disebut perpipaan.grep
mengambil output dan memfilternya menggunakan pola yang diberikan^\./ABC
,.' '
untuk mencegah shell menafsirkan karakter khusus di dalamnya.Sekarang polanya sendiri ditulis dalam sintaks tertentu yang disebut regular expression , atau disingkat regex . Regex adalah alat pencarian yang sangat kuat jika Anda menguasainya, dan ada situs seperti ini yang mengajarkan Anda tentang hal itu secara lebih mendalam, tetapi perhatikan bahwa
grep
itu bukan mesin regex yang lengkap dan Anda tidak dapat melakukan semuanya dengan itu.Untuk tujuan kami:
^
di regex cocok dengan awal string; ini mencegahnya dari mencocokkan pola jika itu tidak terjadi di awal nama file..
di regex memiliki arti khusus juga: itu berarti "cocok dengan karakter tunggal apa pun di sini". Jika Anda ingin menggunakannya sebagai titik literal, Anda harus "melarikan diri" menggunakan backslash\
sebelum itu. (Ya, mencocokkan karakter apa pun tidak akan berbahaya dalam kasus kami, tapi aku melakukannya demi kelengkapannya.)sumber
find | grep
ketikafind
memiliki kemampuan pencocokan pola sendiri yang sangat baik?Anda dapat menggunakan GREP, saya pikir ini adalah solusi paling sederhana, mungkin juga menambahkan beberapa parameter grep lainnya untuk membuat pertandingan lebih akurat
sumber
Anda dapat mencari pola tertentu menggunakan pengelola file Nautilus dan ekspresi reguler.
Untuk melakukannya, klik Pilih Pencocokan Item di menu Gear seperti di bawah ini (Anda juga dapat menekan Ctrl+ s).
Kemudian, cukup ketik ekspresi reguler
ABC*
dan validasi.Setiap file yang namanya cocok dengan pola Anda akan dipilih secara otomatis.
Saya menggunakan Nautilus 3.6. * Dari GNOME3 PPA di Ubuntu 12.10 (Quantal).
sumber
Solusi termudah bagi saya
Di sini Anda dapat memberikan ekspresi reguler apa pun di POLA.
Misalnya, untuk menemukan file dengan "ab" di mana saja di dalam namanya, ketikkan
Untuk menemukan file yang dimulai dengan "ab", ketik
sumber
Jika Anda tidak tahu direktori tempat
ABC*
file berada, dan Anda memiliki jutaan file,locate
perintahnya adalah metode tercepat.Catatan:
find
perintah yang dimulai pada/
direktori root akan sangat lama dan menghasilkan banyak kesalahan izin.sudo updatedb
terlebih dahulu.sumber
saya menggunakan
atau
Ini menunjukkan semua file dengan abc, tidak hanya dimulai dengan abc. Tapi, ini cara yang sangat mudah bagi saya untuk melakukan ini.
sumber
Python:
Perl:
sumber
Ini adalah pencocokan pola glob yang berlabuh di kedua ujungnya. Ini akan cocok dengan semua kemunculan file yang dimulai dengan "ABC" seperti "ABC", "ABC.txt", "ABC123", tetapi tidak "xABC". Dari baris perintah menggunakan 'ls' sebagai pengganti 'printf' di sini adalah alternatif yang aman, namun tergantung pada pendapat siapa Anda setuju, 'ls' tidak aman untuk digunakan dalam skrip. Dalam hal menggunakan 'printf' dengan pencocokan pola glob dianggap aman. Jika Anda akan menggunakan ini dalam skrip, output dari 'printf' tidak akan berisi karakter baris baru sampai akhir aliran output sebagai berikut:
Pengembalian:
Jika Anda membutuhkan jeda baris setelah setiap contoh:
Pengembalian:
"/ path / to / files /" tetap di output jika Anda memasukkannya saat Anda menjalankan perintah 'printf'. Tanpa itu hanya nama file yang muncul:
Kembali
Dengan asumsi Anda menjalankan perintah di dalam direktori di mana file ada.
sumber
echo /path/to/files/ABC* | tr " " "\n"
bukan ide yang bagus. Pertimbangkan jika ada file/path/to/files/ABC EFG
, ada spasi di nama file. Andatr
akan memecah nama file menjadi dua baris terpisah, yang tidak bagus. Lebih buruk lagi jika ada beberapa spasi dalam nama file. Saya akan merekomendasikan Anda menggunakannyaprintf "%s\n" ABC*
sebagai gantinya, yang seharusnya membantu dengan spasi dalam nama file, tetapi masih bermasalah dengan karakter khusus lainnya seperti\n
Command-t di salah satu plugin vim favorit saya, plugin berbasis ruby di atas integrasi dengan FZF.
Dengan menggunakan Comamnd-T dan FZF Anda dapat melakukan pencarian dengan mekanisme "fuzzy" yang sangat cepat untuk:
Seperti yang terlihat
Saya selalu mencari dalam sejarah perintah dengan membuka terminal baru dan tekan:
Selain mencari di semua folder secara rekursif dengan menulis di tab terminal apa pun:
Kemudian mulailah nama file Anda
Anda juga dapat menulis di dalamnya
vim
Sangat membantu terutama di folder besar.
sumber
Anggaplah saya berada di direktori root dan saya ingin daftar direktori dll saja: kita menulis,
hasil yang kami dapatkan,
Contoh lain,
Kita juga bisa menulis:
kita mendapatkan,
sumber