Sida 1 av 1

hitta mappar efter datum med terminalen mha. jokertecken

Postat: 02 jan 2022, 21:37
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

Re: hitta mappar efter datum med terminalen mha. jokertecken

Postat: 02 jan 2022, 21:54
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!!!!!

Re: hitta mappar efter datum med terminalen mha. jokertecken

Postat: 02 jan 2022, 22:25
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??

Re: hitta mappar efter datum med terminalen mha. jokertecken

Postat: 02 jan 2022, 23:54
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.

Re: hitta mappar efter datum med terminalen mha. jokertecken

Postat: 03 jan 2022, 00:20
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"...

Re: hitta mappar efter datum med terminalen mha. jokertecken

Postat: 03 jan 2022, 04:18
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!!!!!

Re: hitta mappar efter datum med terminalen mha. jokertecken

Postat: 03 jan 2022, 11:08
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 \*"...

Re: hitta mappar efter datum med terminalen mha. jokertecken

Postat: 03 jan 2022, 17:57
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".

Re: hitta mappar efter datum med terminalen mha. jokertecken

Postat: 03 jan 2022, 20:22
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...