Saya ingin menjalankan ls dan mengecualikan file tertentu dalam output.
Ketika saya menjalankan perintah berikut, saya mendapatkan semua file dengan masing-masing pada satu baris:
$ ls -1
file1
file2
file3
temp
Saya ingin menjalankan perintah ini dengan cara yang ditampilkan
$ ls -1 <insert magic here> temp
file1
file2
file3
--ignore
Anda dapat memperluasnya ke pola glob, misalnyals --ignore="file?"
atauls --ignore="file*"
Bagi saya jika saya menggunakan -Sekali, itu berfungsi tetapi jika saya menggunakan dua kali tidak. misalnya:
ls -I *.csv
bekerja.Tetapi
ls -I *.csv -I *.txt
tidak berfungsi dan mengembalikan file txt sebagai gantinya.--ignore melakukan trik untukku. Inilah yang saya butuhkan dan kerjakan.
ls -lhrt --ignore="*.gz" --ignore="*.1"
Itu akan mencantumkan saya file dari folder log di mana tidak termasuk log cadangan lama.
sumber
ls -I '*.txt'
. Alasannya tidak bekerja tanpa tanda kutip adalah karena ekspansi shell, yaitu Anda memberi tahu shell untuk mendaftar semua file csv alih-alih mengecualikannya. Apa yang sebenarnya terjadi adalah bahwa ia mengabaikan file .csv dan .1 pertama setelah ekspansi, tetapi daftar sisanyals --ignore={"*.jpg","*.png","*.svg"}
sumber
--ignore
opsi. Anda juga bisa menggunakan--ignore="*."{jpg,png,svg}
Saya pikir ini menghasilkan output yang Anda cari:
Rupanya , Anda perlu
shopt -s extglob
untuk itu berfungsi(saya sudah mengaktifkannya, jadi saya kira beberapa waktu di masa lalu saya merasa berguna dan mengaktifkannya).
Saya kira Anda juga bisa menggunakan grep untuk memfilter output:
Menggunakan pipa dan filter memberikan lebih banyak fleksibilitas, dan keterampilan yang dapat ditransfer ke perintah / situasi lain, meskipun Anda mungkin tidak tertarik pada hal itu untuk kasus khusus ini.
sumber