Saan kaikki jpg kuvat käyttämällä:

find . -name "*.jpg" 

Mutta miten voin lisätä png -tiedostot myös tuloksiin?

Kommentit

Vastaa

Käytä -o -lippua eri parametrien välillä.

find ./ -type f \( -iname \*.jpg -o -iname \*.png \) toimii kuin viehätys.

HUOMAUTUS Hakemiston ja sen sisällön välillä on oltava väli tai se ei toimi.

Selitys:

  • -type f – etsi vain tiedostoja (ei hakemistoja)
  • \( & \) – tarvitaan, jotta -type f soveltuu kaikkiin argumentteihin
  • -o – looginen TAI operaattori
  • -iname – kuten -name, mutta ottelu ei eroa isoja ja pieniä kirjaimia

Kommentit

  • Tarvitsetko sulkeita. Komento toimii minulle ilman heitä. Tarvitaanko niitä joihinkin kuoreihin?
  • @miked Komento " toimii " ilman niitä, kyllä, mutta ' d saatat saada osumia hakemistoon, joka päättyy .png-tiedostoon, sekä tiedostoihin, jotka päättyvät .jpg-tiedostoon, mikä ei tarkalleen ole tarkoitettu.
  • Kiitos selventämisestä! type -f ei ulotu ja päde molempiin lausekkeisiin ilman sulkeita, joten find ./ -type f -iname \*.jpg -o -type f -iname \*.png toimii myös … vaikka se ' kaksi merkkiä pidempään 🙂
  • Se ' on operaattorin etusijalla. Aivan kuten a * b + c eroaa a * (b + c)
  • @jdhao Hyvä saalis, muutettu.

vastaus

Voit yhdistää ehtoja -o nimellä ehdottanut Shadur . Huomaa, että -o: llä on alempi etusija kuin rinnakkaisella, joten saatat tarvita sulkeita.

find . -name "*.jpg" -o -name "*.png" find . -mtime -7 \( "*.jpg" -o -name "*.png" \) # all .jpg or .png images modified in the past week 

Linuxissa voit käytä -regex yhdistääksesi laajennukset peräkkäin. Oletusarvoinen regexp-syntaksin muoto on Emacs ( perusregexps ja muutama laajennus, kuten \| vuorottelulle); siellä on mahdollisuus vaihtaa laajennettuun regexpsiin .

find -regex ".*\.\(jpg\|png\)" find -regextype posix-extended -regex ".*\.(jpg|png)" 

FreeBSD: llä, NetBSD: llä ja OSX, voit käyttää -regex yhdistettynä -E -laajennuksiin.

find -E . -regex ".*\.(jpg|png)" 

kommentit

  • ' on aina parempi käyttää -iname -name -kohdan sijaan – sieppaat myös image.JPG ja image.PnG

vastaus

Tämä on oikein:

find . -iregex ".*\.\(jpg\|gif\|png\|jpeg\)$" 

Kommentit

  • Miksi sanot, että se on " enemmän " oikein?
  • @Kevin luultavasti, koska -iregex vastaa jpg sekä JPG Jpg jpG$ ei tarvita ' t tarvita .
  • Tämä toimii hyvin MinGW -sovelluksessa.
  • Ensinnäkin jätit hakukansion ensimmäiseksi argumentiksi, joka heittää virhe. Toiseksi sulkeista ei pääse OSX: ssä, ja sitä tulisi käyttää sen sijaan: find -E . -iregex '.*\.(jpg|png|gif)', kuten @sorin ' s -vastauksessa on esitetty.

vastaus

Selkeyden vuoksi ainoa vaihtoehto, joka toimii Linux-, Unix- ja macOS-makuilla, on:

find -E . -regex ".*\.(jpg|png)" 

Tämä johtuu siitä, että OS X -versio on hieman erilainen, mutta on tärkeää kirjoittaa asioita, jotka menevät hyvin useimmille alustoille.

Kommentit

  • -E-lippu ei kelpaa löytämiseen Ubuntu 14.04: ssä
  • -E-lippu ei kelpaa MinGW joko (ainakin versio / kokoonpano, jonka kokeilin (oletusasetukset tietylle versiolle)).
  • Mikä osa -type f \( -iname \*.png -o -iname \*.jpg\) ei toimi OSX: ssä?
  • Voiko vahvistaa, että -type f \( -iname \*.png -o -iname \*.jpg\) toimii OSX: llä

Vastaa

/\.(jpe?g|png|gif|bmp)$/i; 

Käytä sitä.

Kommentoi s

  • Saatat joutua selittämään tätä hieman.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *