Daftar file-file dengan ekstensi tertentu dengan ls dan grep

Saya hanya ingin mendapatkan file-file dari dir saat ini dan hanya output .mp4 .mp3 .file exe tidak ada yang lain. Jadi saya pikir saya hanya bisa melakukan ini:

ls | grep \.mp4$ | grep \.mp3$ | grep \.exe$

Tapi tidak, seperti yang pertama grep akan output hanya mp4's maka yang lain 2 grep's won't yang akan digunakan.

Ada ide? PS, Menjalankan script ini pada Lambat Leopard.

Mengomentari pertanyaan (3)
Larutan

Mengapa tidak:

ls *.{mp3,exe,mp4}

I'm tidak yakin di mana saya belajar itu - tapi aku've telah menggunakan ini.

Komentar (7)

Menggunakan ekspresi reguler dengan cari:

find . -iregex '.*\.\(mp3\|mp4\|exe\)' -printf '%f\n'

Jika anda're perpipaan nama file:

find . -iregex '.*\.\(mp3\|mp4\|exe\)' -printf '%f\0' | xargs -0 dosomething

Ini melindungi nama file yang mengandung spasi atau baris baru.

OS X menemukan hanya mendukung pergantian ketika -E (ditingkatkan) opsi yang digunakan.

find -E . -regex '.*\.(mp3|mp4|exe)'
Komentar (4)

egrep -- diperpanjang grep -- akan membantu di sini

ls | egrep '\.mp4$|\.mp3$|\.exe$'

harus melakukan pekerjaan.

Komentar (4)

cara termudah adalah dengan hanya menggunakan ls

ls *.mp4 *.mp3 *.exe
Komentar (6)

Hanya dalam kasus: mengapa don't anda menggunakan menemukan?

find -iname '*.mp3' -o -iname '*.exe' -o -iname '*.mp4'
Komentar (1)

Tidak perlu untuk grep. Shell wildcard akan melakukan trik.

ls *.mp4 *.mp3 *.exe

Jika anda telah menjalankan

shopt -s nullglob

kemudian yang tak tertandingi gumpalan akan dihapus sama sekali dan tidak akan meninggalkan pada baris perintah yang tidak di-expand.

Jika anda ingin kasus-sensitif globbing (jadi *.mp3 akan cocok dengan foo.MP3):

shopt -s nocaseglob
Komentar (2)

Untuk pengguna OSX:

Jika anda menggunakan ls *.{mp3,exe,mp4}, ia akan melempar kesalahan jika salah satu dari mereka ekstensi tidak memiliki hasil.

Menggunakan ls *.(mp3|exe|mp4) akan mengembalikan semua file yang cocok ekstensi tersebut, bahkan jika salah satu ekstensi yang memiliki 0 hasil.

Komentar (5)

Dalam kasus anda masih mencari alternatif solusi:

ls | grep -i -e '\\.tcl$' -e '\\.exe$' -e '\\.mp4$'

Merasa bebas untuk menambahkan lebih -e bendera jika diperlukan.

Komentar (0)

ls -R | findstr ".mp3"

ls -R => daftar direktori secara rekursif

Komentar (0)
ls | grep "\.mp4$
\.mp3$
\.exe$"
Komentar (2)

Berikut adalah salah satu contoh bahwa bekerja untuk saya.


find 
Komentar (0)