Saya ingin mendaftar semua file yang cocok dengan pola tertentu sambil mengabaikan kasingnya.
Sebagai contoh, saya menjalankan perintah berikut:
ls *abc*
Saya ingin melihat semua file yang memiliki "abc" sebagai bagian dari nama file, seperti mengabaikan case
-rw-r--r-- 1 mtk mtk 0 Sep 21 08:12 file1abc.txt
-rw-r--r-- 1 mtk mtk 0 Sep 21 08:12 file2ABC.txt
Catatan
Saya telah mencari halaman manual untuk kasus, tetapi tidak dapat menemukan apa pun.
shport -s nocaseglob
?shopt -s
; untuk menghapusnya , Anda gunakanshopt -u
. Atau, Anda dapat membungkus segala sesuatu di subkulit dengan menggunakan( )
sehingga pengaturan tersebut tidak mempengaruhi shell orang tua:(shopt -s nocaseglob ; ls *abc*)
.[aA][bB][cC]
)?shopt
perintah dalam 15 tahun terakhir menggunakan bash!Seperti yang dijelaskan oleh polemon, itu adalah shell (bukan ls) yang meluas
*abc*
ke daftar file. Ini disebut Pencocokan Pola .Selain mengubah seluruh perilaku Pencocokan Pola untuk mengabaikan huruf besar-kecil, Anda bisa menggunakan bentuk lain dari pola yang cocok dengan
*
. Berikut ini akan melakukan apa yang Anda inginkan dalam bash:Dari bash man:
Ini memungkinkan lebih banyak pencocokan biji-bijian halus di mana Anda dapat menggunakan
*[aA][bB]c*
untuk mencocokkanabc
atauABc
tetapi tidakabC
atauABC
. Atau contoh dalam bahasa Prancis, di mana saya ingin mencocokkan semua contohe
karakter:sumber
[...]
bisa bermanfaat dalam banyak kasus, dan saya pikir itu layak disebutkan.[[=e=][=E=]]
.Anda juga dapat menambahkan
-i
opsi (--ignore-case)grep
untuk mendapatkan dan keluaran di bawah ini.sumber
Saya tidak berpikir ini mungkin dengan ls, tetapi Anda dapat menggunakan find sebagai gantinya:
sumber
gunakan kode berikut:
sumber
Anda dapat melakukan GREP pada file
-i
yang menambahkan opsi tidak sensitif.Misalnya untuk menemukan keduanya
abc
danABC
Anda dapat menjalankan perintah inisumber
-i
opsi di mana pun dalam perintah Anda.ls
?Di tcsh, atur alias di .aliases
("BS" = one "backslash"; Saya harus menggunakan ini untuk membuatnya muncul di browser saya.)
dan gunakan
lsnc
sebagai gantinyals
Di bash, coba alias di .bash_aliases like
Dengan opsi untuk
ls
, mis.ls -l
, Di sini adalah perbaikan sederhana:tcsh:
pesta:
sumber
=
' setelah lsnocase?ls
, tidak adals
dansort
bisa untuk memperbaiki situasi. Seperti dicatat dalam jawaban lain, masalah perlu diselesaikan di shell, bukan denganls
sintaks.