hitta mappar efter datum med terminalen mha. jokertecken

Här diskuterar vi skal, kommandon och klassiska linuxverktyg.
Användarvisningsbild
nisse2
Inlägg: 747
Blev medlem: 10 jul 2006, 23:33
OS: Ubuntu
Utgåva: 22.04 Jammy Jellyfish LTS

hitta mappar efter datum med terminalen mha. jokertecken

Inlägg av nisse2 »

Med terminalen skulle jag vilja söka efter mappar baserat ett specifikt år/månad/dag med text

vad jag menar tex.

Hitta mappen med år_månad som 200901 plus annan text i mappen - mappen kan heta tex. hockey_hedemora_200901 och jag vill hitta 200901 oavsett namn

Hur söker man med jokertecken i terminalen och kommando?

ps. även från externa HDD, där kanske åtkomsten kan vara nekad
Användarvisningsbild
nisse2
Inlägg: 747
Blev medlem: 10 jul 2006, 23:33
OS: Ubuntu
Utgåva: 22.04 Jammy Jellyfish LTS

Re: hitta mappar efter datum med terminalen mha. jokertecken

Inlägg av nisse2 »

Har kommit så här lågt när jag testat någon mapp som jag vad den heter på en extern HDD:
En extern HDD har ett umderkatalog som heter: blodmane_2015

Och jag har testat att söka enligt nedan: (jag vet vad den externa HDD heter, men mappen finns i en underkatalog till HDD'n)

erik@erik:/media/erik$ find $/media/erik/60723229-82e5-4e52-9835-2e9d9c0690ad -type d -name 2015
find: ‘$/media/erik/60723229-82e5-4e52-9835-2e9d9c0690ad’: Filen eller katalogen finns inte
erik@erik:/media/erik$

Resultat: åtkomst nekad till externa HDD'n därför hittar inga kataloger eller filer?

ps. det här blev knepigt/svårt!!!!!
Bilagor
sokning_terminalen.png
sokning_terminalen.png (32.34 KiB) Visad 2131 gånger
Senast redigerad av 1 nisse2, redigerad totalt 2 gånger.
Användarvisningsbild
nisse2
Inlägg: 747
Blev medlem: 10 jul 2006, 23:33
OS: Ubuntu
Utgåva: 22.04 Jammy Jellyfish LTS

Re: hitta mappar efter datum med terminalen mha. jokertecken

Inlägg av nisse2 »

Har fått det att funka på home-katalogen bara, övriga HDD'n nekar att katalogen eller filen finns!!!!! (går inte ens med "sudo"

Är jag ute och cyklar eller??
Användarvisningsbild
Gunnar Hjalmarsson
Inlägg: 3030
Blev medlem: 08 aug 2010, 13:49
OS: Ubuntu
Utgåva: 22.04 Jammy Jellyfish LTS
Ort: Göteborg

Re: hitta mappar efter datum med terminalen mha. jokertecken

Inlägg av Gunnar Hjalmarsson »

nisse2 skrev:find $/media/erik/60723229-82e5-4e52-9835-2e9d9c0690ad -type d -name 2015
Vad gör det där dollartecknet innan sökvägen till monteringspunkten? Prova utan det.
Användarvisningsbild
Osprey
Inlägg: 6310
Blev medlem: 06 apr 2008, 00:09
OS: Ubuntu
Ort: Göteborg/Mölndal/Falkenberg
Kontakt:

Re: hitta mappar efter datum med terminalen mha. jokertecken

Inlägg av Osprey »

nisse2 skrev:Hitta mappen med år_månad som 200901 plus annan text i mappen - mappen kan heta tex. hockey_hedemora_200901 och jag vill hitta 200901 oavsett namn

Hur söker man med jokertecken i terminalen och kommando?
Du kan t.ex söka med:

Kod: Markera allt

find . -name \*200901\*
..där punkten anger att du söker från där du står. När du söker efter en sträng med siffror, så funkar "-name" alldeles utmärkt, men när det är bokstäver, så är det ibland bättre med "-iname", som gör att den ignorerar om det är versaler eller gemena...
nisse2 skrev:erik@erik:/media/erik$ find $/media/erik/60723229-82e5-4e52-9835-2e9d9c0690ad -type d -name 2015
find: ‘$/media/erik/60723229-82e5-4e52-9835-2e9d9c0690ad’: Filen eller katalogen finns inte
erik@erik:/media/erik$

Resultat: åtkomst nekad till externa HDD'n därför hittar inga kataloger eller filer?
Felet här är att du har ett "$" före HDD:ns monteringspunkt. Ange det istället som:

Kod: Markera allt

find /media/erik/60723229-82e5-4e52-9835-2e9d9c0690ad -type d -name \*2015\*
...så ska det nog funka. Wildcardsen behövs också om inte namnet är just precis, exakt "2015"...
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
Användarvisningsbild
nisse2
Inlägg: 747
Blev medlem: 10 jul 2006, 23:33
OS: Ubuntu
Utgåva: 22.04 Jammy Jellyfish LTS

Re: hitta mappar efter datum med terminalen mha. jokertecken

Inlägg av nisse2 »

Tack för era svar - "Gunnar Hjalmarsson" och "Osprey" - era svar funkar perfekt (utan "$-tecken dvs.) och speciellt "Ospary"'s genomgående förklaring!

ps. utan er vore forumet ganska "värdelöst" - stort "eloge" till er båda!!!!!
Användarvisningsbild
Osprey
Inlägg: 6310
Blev medlem: 06 apr 2008, 00:09
OS: Ubuntu
Ort: Göteborg/Mölndal/Falkenberg
Kontakt:

Re: hitta mappar efter datum med terminalen mha. jokertecken

Inlägg av Osprey »

Anledningen till att du måste ha en "backslash" före "stjärnan" (asterisken) och ange "\*" istället för bara "*", är för att inte shell (bash) ska expandera den, utan den ska skickas vidare orörd till "find" som i sin tur använder den.

Jämför t.ex "echo *" och "echo \*", eller "ls *" och "ls \*"...
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
Användarvisningsbild
Gunnar Hjalmarsson
Inlägg: 3030
Blev medlem: 08 aug 2010, 13:49
OS: Ubuntu
Utgåva: 22.04 Jammy Jellyfish LTS
Ort: Göteborg

Re: hitta mappar efter datum med terminalen mha. jokertecken

Inlägg av Gunnar Hjalmarsson »

Osprey skrev:Anledningen till att du måste ha en "backslash" före "stjärnan" (asterisken) och ange "\*" istället för bara "*", är för att inte shell (bash) ska expandera den, utan den ska skickas vidare orörd till "find" som i sin tur använder den.
Alternativt kan man använda citattecken, dvs. '*2015*'. Såg att båda sätten nämns i "man find".
Användarvisningsbild
Osprey
Inlägg: 6310
Blev medlem: 06 apr 2008, 00:09
OS: Ubuntu
Ort: Göteborg/Mölndal/Falkenberg
Kontakt:

Re: hitta mappar efter datum med terminalen mha. jokertecken

Inlägg av Osprey »

Gunnar Hjalmarsson skrev:Alternativt kan man använda citattecken, dvs. '*2015*'. Såg att båda sätten nämns i "man find".
Det stämmer, numera detta har tillkommit i Linux, men \* är det gamla klassiska sättet från Un*x. När man använder citattecken så är det i det sammanhanget säkrast att använda "enkla", dvs. '*2015*' och inte "*2015*".

Enkla citattecken är "lite hårdare" än dubbla. Prova t.ex med echo "$HOME" och echo '$HOME', i det här sammanhanget handlar det ju om att allting ska skickas oförändrat till "find", även om motsatsen är möjlig också. Det finns ingenting annat som har så mycket genvägar, fallgropar, återvändsgränder och möjligheter som bash... ;)

Skillnaden mellan \*2015\* och '*2015*', är att \ gör "escape" på ett enda tecken, du gör alltså bara escape på jokertecknet/wildcardet, allt annat är upp till shell (bash).
Skillnaden kan man t.ex se med echo "$HOME$PATH", echo '$HOME$PATH' och echo $HOME\$PATH...
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
Skriv svar

Återgå till "Terminalforum"