scriptiä pukkaa muttei toimi

Alla oleva ei tulosta mitään vaikka kyseisiä tiedostoja löytyy

extensions="mp4\|avi\|flv\|mpg\|mkv"
find -P . -maxdepth 1 -type f -iregex '.*.\("$extensions"\)$' | sed 's/ /\\ /g'

jos extensions-muuttujan sisällön sijoittaa suoraan lauseen mallia

find -P . -maxdepth 1 -type f -iregex '.*.\(mp4\|avi\|flv\|mpg\|mkv\)$' | sed 's/ /\\ /g'

tiedostot löytyy. Mikä tuossa ylemmässä on pielessä?
3223
Äänestä

Muut lukivat myös

Vastaukset 3

Vanhimmat

Jollakinhan se muuttujaan kätketty syöte pitää purkaa. Tässä a- muuttujaan sijoitetaan muutama tiedoston pääte, jotka täytyy erotella toisistaan välilyönnillä näin:

a="*.txt *.pdf *.sh"

sitten muuttujan sisältö puretaan echo komennolla näin:

sudo find /home/ -iname {} | echo $a

Nyt käskyn suorittaminen listaa kaikki tiedostot joiden pääte sijoitettiin a- muuttujaan.

Linux Mint 18 Sarah
Xfce 64-bit

Äänestä
  • muuten hyvä mutta kaikki tiedostot ovat yhtä pötköä joten jatkojalostuksesta ei tule mitään. Päätin käyttää tuota kysymyksessäni olevaa alempaa esimerkkiä. Ei niitä haettavia päätteitä niin hirvittävästi ole. Ylempi olisi luettavuuden ja myöhemmän päätteiden lisäyksen kannalta parempi.

    Äänestä

eikös se ole selvää, jos homma ei toimi, niin siellä on selvästi jotakin, mikä estää shelliä purkamasta parametrilistaa auki. Eli kun annat ls *.txt -komennon, shell etsii kaikki txt-päätteiset tiedostot ja antaa ne ls-ohjelmalle. Ehkäpä hieman triviaali esimerkki, mutta antaa hyvän kuvan asiasta. Eli käy läpi noita kiertomerkkejä (lainausmerkit, sulkeet, yksöishipsut) niin eiköhän se lähde aukeamaan mikä tökkäsee. Haluat siis merkkijonon muodossa, joka expandoidaan - et merkkijonoa sellaisenaan! :)

Äänestä

Kommentoi aloitusta


voepärkkäle kirjoitti:

Alla oleva ei tulosta mitään vaikka kyseisiä tiedostoja löytyy

extensions="mp4\|avi\|flv\|mpg\|mkv"
find -P . -maxdepth 1 -type f -iregex '.*.\("$extensions"\)$' | sed 's/ /\\ /g'

jos extensions-muuttujan sisällön sijoittaa suoraan lauseen mallia

find -P . -maxdepth 1 -type f -iregex '.*.\(mp4\|avi\|flv\|mpg\|mkv\)$' | sed 's/ /\\ /g'

tiedostot löytyy. Mikä tuossa ylemmässä on pielessä?

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu