kecualikan file tertentu di ls


61

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

Jawaban:


82
ls -I <filename>

-I = Abaikan nama file, yaitu, jangan daftar file yang ditentukan.

Untuk mengabaikan lebih dari satu file, tambahkan -I sebelum setiap nama file.

ls -I file1 -I file2

Untuk mengabaikan file dengan ekstensi namanya, lakukan hal berikut, misalnya.

ls -I "*.jpg" -I "*.svg"

4
Jika Anda menggunakan opsi long-form, --ignoreAnda dapat memperluasnya ke pola glob, misalnya ls --ignore="file?"atauls --ignore="file*"
steeldriver

3
Anda dapat menggunakan pola glob dengan bentuk pendek juga dengan mengutip polanya
verboze

18

Bagi saya jika saya menggunakan -Sekali, itu berfungsi tetapi jika saya menggunakan dua kali tidak. misalnya: ls -I *.csvbekerja.

Tetapi ls -I *.csv -I *.txttidak 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.


3
mengutip * .csv pada form pertama berfungsi, mis., 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 sisanya
verboze

Kutipan ganda juga bermanfaat bagi saya. Terima kasih @verboze
user38537

ini lebih mudah. Terima kasih.
Philippe Delteil

6

ls --ignore={"*.jpg","*.png","*.svg"}


4
Ini hanya menggunakan ekspansi brace bash untuk mendapatkan tiga --ignoreopsi. Anda juga bisa menggunakan--ignore="*."{jpg,png,svg}
muru

1

Saya pikir ini menghasilkan output yang Anda cari:

ls -1 !(temp)

Rupanya , Anda perlu shopt -s extglobuntuk 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:

ls -1 | grep -v '^temp$'

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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.