GNU ls (yaitu perintah ls pada sistem Linux yang tidak tertanam dan Cygwin, juga tersedia di beberapa unit lain) memiliki opsi untuk menyembunyikan beberapa file, berdasarkan namanya. Tidak ada cara untuk mengabaikan direktori.
ls --hide='t_*' uploads
Pendekatan lain adalah membuat shell Anda melakukan pencocokan. Bash, ksh dan zsh memiliki pola negasi !(t_*)
untuk mencocokkan semua file kecuali yang cocok t*
; di bash fitur ini perlu dinyalakan shopt -s extglob
, dan di zsh perlu dinyalakan setopt ksh_glob
. Zsh juga memiliki sintaks ^t_*
yang setara yang perlu dinyalakan setopt extended_glob
. Ini masih tidak mengabaikan direktori. Zsh memiliki fitur tambahan yang memungkinkan untuk mencocokkan file tidak hanya dengan nama tetapi juga dengan metadata dan lainnya: kualifikasi global . Tambahkan (.)
di akhir pertandingan untuk membatasi ke file biasa. Negasi ^
adalah bagian dari sintaksis pencocokan nama, jadi ^t_*(.)
artinya “semua file biasa tidak cocok t_*
” dan bukan “semua file yang bukan file biasa cocok t_*
”.
setopt extended_glob # put this in your ~/.zshrc
ls uploads/^t_*(.)
Jika Anda menemukan diri Anda tanpa alat canggih, Anda dapat melakukan ini di unix dengan find
. Ini bukan jenis yang biasanya Anda ketik di baris perintah, tetapi kuat dan tepat. Caleb telah menunjukkan bagaimana melakukan ini dengan GNU find . The -maxdepth
pilihan adalah tidak portabel; Anda dapat menggunakannya -prune
sebagai gantinya, untuk menghentikan find
pengulangan secara mudah.
find uploads/* -type d -prune -o \! -type f -name 't_*' -print
Ganti -print
dengan -exec ls -lG -- {} +
untuk mengeksekusi ls
dengan opsi favorit Anda pada file.
Semua perintah di atas menyembunyikan file dot (yaitu file yang namanya dimulai dengan a .
). Jika Anda ingin menampilkannya, teruskan -A
ke ls
, atau tambahkan D
kualifikasi glob di zsh ( ls uploads/^t_*(.D)
). Dengan find
, Anda dapat menggunakan pendekatan yang berbeda untuk membuatnya hanya muncul satu tingkat ( find
tidak memperlakukan file dot secara khusus). Ini hanya berfungsi jika Anda menjalankan find
di direktori saat ini.
cd uploads && find . -name . -o -type d -prune -o \! -type f -name 't_*' -print