kzen.dev
  • Întrebări
  • Tag-uri
  • Utilizatori
Notificări
Recompense
Înregistrare
După înregistrare, veți primi notificări despre răspunsurile și comentariile la întrebările DVS.
Logare
Dacă aveţi deja un cont, autentificaţi-vă pentru a verifica notificările noi.
Aici vor fi recompensele pentru întrebările, răspunsurile și comentariile adăugate sau modificate.
Mai mult
Sursă
Editează
 Mint
Mint
Question

Lista de fișiere cu anumite extensii cu ls și grep

Vreau doar pentru a obține fișierele din directorul curent și ieșire .mp4 .mp3 .exe, fișiere de nimic altceva. Așa că am crezut că am putea face acest lucru:

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

Dar nu, ca prima grep va afișa doar mp4's pentru acestea alte 2 grep's câștigat't fi utilizate.

Orice idei? PS, care Rulează acest script pe Lent Leopard.

139 2009-09-19T03:21:21+00:00 11
Steven Penny
Steven Penny
Întrebarea editată 29 decembrie 2013 в 7:36
Programare
macos
shell
bash
grep
Solution / Answer
meder omuraliev
meder omuraliev
19 septembrie 2009 в 6:45
2009-09-19T06:45:15+00:00
Mai mult
Sursă
Editează
#9493209

De ce nu:

ls *.{mp3,exe,mp4}

Am'm nu sunt sigur în cazul în care-am învățat - dar nu'am fost folosind acest lucru.

318
0
Dennis Williamson
Dennis Williamson
19 septembrie 2009 в 7:41
2009-09-19T07:41:43+00:00
Mai mult
Sursă
Editează
#9493210

Utilizați expresii regulate cu "găsi":

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

Daca're conducte de nume de fișiere:

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

Aceasta protejează nume de fișiere care conțin spații sau linii noi.

OS X "găsi" acceptă numai alternanța când -E (enhanced) opțiune este utilizată.

find -E . -regex '.*\.(mp3|mp4|exe)'
Dennis Williamson
Dennis Williamson
Răspuns editat 28 februarie 2017 в 12:26
42
0
 mob
mob
19 septembrie 2009 в 3:25
2009-09-19T03:25:11+00:00
Mai mult
Sursă
Editează
#9493203

egrep -- extins grep-va ajuta aici

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

ar trebui să facă treaba.

 mob
mob
Răspuns editat 27 octombrie 2017 в 3:30
35
0
Joshua K
Joshua K
19 septembrie 2009 в 3:26
2009-09-19T03:26:52+00:00
Mai mult
Sursă
Editează
#9493205

cel mai simplu mod este de a utiliza doar ls

ls *.mp4 *.mp3 *.exe
Charles Duffy
Charles Duffy
Răspuns editat 19 septembrie 2009 в 6:16
12
0
P Shved
P Shved
19 septembrie 2009 в 5:37
2009-09-19T05:37:15+00:00
Mai mult
Sursă
Editează
#9493207

Doar în cazul în care: de ce nu't utilizați "găsi"?

find -iname '*.mp3' -o -iname '*.exe' -o -iname '*.mp4'
9
0
 camh
camh
19 septembrie 2009 в 3:27
2009-09-19T03:27:32+00:00
Mai mult
Sursă
Editează
#9493206

Nu este nevoie de grep. Shell metacaractere va face truc.

ls *.mp4 *.mp3 *.exe

Dacă ați rulat

shopt -s nullglob

apoi neegalat globuri vor fi eliminate cu totul și să nu fie lăsat în linia de comandă neexpandate.

Dacă doriți caz-insensibil expandarea (așa *.mp3 va potrivi foo.MP3):

shopt -s nocaseglob
5
0
 james2doyle
james2doyle
5 martie 2015 в 8:26
2015-03-05T20:26:26+00:00
Mai mult
Sursă
Editează
#9493212

Pentru utilizatorii OSX:

Dacă utilizați e *.{mp3,exe,mp4}, se va arunca o eroare dacă una dintre aceste extensii nu are rezultate.

Folosind e *.(mp3|exe|mp4) va returna toate fișierele care se potrivesc cu aceste extensii, chiar dacă una dintre extensiile avut 0 rezultate.

 james2doyle
james2doyle
Răspuns editat 4 ianuarie 2017 в 8:05
5
0
Hai Vu
Hai Vu
19 septembrie 2009 в 6:41
2009-09-19T06:41:52+00:00
Mai mult
Sursă
Editează
#9493208

În cazul în care sunteți încă în căutarea pentru o soluție alternativă:

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

Simțiți-vă liber pentru a adăuga mai mult-e steaguri, dacă este necesar.

Steven Penny
Steven Penny
Răspuns editat 29 decembrie 2013 в 7:34
4
0
 vardamanpk
vardamanpk
24 decembrie 2013 в 5:36
2013-12-24T05:36:01+00:00
Mai mult
Sursă
Editează
#9493211

ls-R | findstr exe ".mp3"

ls-R => liste de subdirectoare recursiv

Mike Causer
Mike Causer
Răspuns editat 24 decembrie 2013 в 5:54
2
0
Jeff Mc
Jeff Mc
19 septembrie 2009 в 3:26
2009-09-19T03:26:29+00:00
Mai mult
Sursă
Editează
#9493204
ls | grep "\.mp4$
\.mp3$
\.exe$"
2
0
Jyoti Prakash
Jyoti Prakash
12 februarie 2018 в 10:27
2018-02-12T10:27:32+00:00
Mai mult
Sursă
Editează
#9493213

Aici este un exemplu care a lucrat pentru mine.

find <mainfolder path> -name '*myfiles.java' | xargs -n 1 basename
0
0
Adăugati o întrebare
Categorii
Toate
Tehnologii
Cultură
Viață / Artă
Stiință
Profesii
Afaceri
Utilizatori
Toate
Nou
Populare
1
工藤 芳則
Înregistrat 6 zile în urmă
2
Ирина Беляева
Înregistrat 1 săptămână în urmă
3
Darya Arsenyeva
Înregistrat 1 săptămână în urmă
4
anyta nuam-nuam (LapuSiK)
Înregistrat 1 săptămână în urmă
5
Shuhratjon Imomkulov
Înregistrat 1 săptămână în urmă
ES
ID
JA
KO
RO
RU
TR
ZH
© kzen.dev 2023
Sursă
stackoverflow.com
în cadrul licenței cc by-sa 3.0 cu atribuire