Sortera och flytta filer

Här diskuterar vi skal, kommandon och klassiska linuxverktyg.
Ainigma
Inlägg: 803
Blev medlem: 26 sep 2007, 20:49
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS

Sortera och flytta filer

Inlägg av Ainigma »

Hur gör man om man har en mängd pdf filer där man vill sortera ut alla som har texter som innehåller "analogy" och "argument" och flytta dem till en egen mapp? :)
Lars
Inlägg: 6191
Blev medlem: 14 jan 2007, 19:31
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Ort: Stockholm

Re: Sortera och flytta filer

Inlägg av Lars »

Det här är en start, resten lämnas som en övning åt läsaren ;)

Kod: Markera allt

pdftotext fil.pdf - | egrep "analogy|argument"
Ainigma
Inlägg: 803
Blev medlem: 26 sep 2007, 20:49
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS

Re: Sortera och flytta filer

Inlägg av Ainigma »

Blir det då alltså konjunktionen av analogy och argument ? :)
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Sortera och flytta filer

Inlägg av Konservburk »

Ainigma skrev:Blir det då alltså konjunktionen av analogy och argument ? :)
Nej, inklusiv disjunktion är vad det blir.
Lars
Inlägg: 6191
Blev medlem: 14 jan 2007, 19:31
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Ort: Stockholm

Re: Sortera och flytta filer

Inlägg av Lars »

Ainigma skrev:Blir det då alltså konjunktionen av analogy och argument ? :)
Kommandot returnerar unionen "rader som innehåller analogy" ∪ "rader som innehåller argument" D.v.s. alla rader som uppfyller disjunktionen "raden innehåller analogy" ∨ "raden innehåller argument".

Jag hoppas att det blev det rätt nu, det var ett tag sedan jag läste logik :)
Ainigma
Inlägg: 803
Blev medlem: 26 sep 2007, 20:49
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS

Re: Sortera och flytta filer

Inlägg av Ainigma »

Så om jag vill ha en konjunktion av begrepp vad skriver jag då? :)
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Sortera och flytta filer

Inlägg av Konservburk »

Otestat förslag...

Kod: Markera allt

find -maxdepth 1 \
-exec sh -c 'file -i "$0" 2>&-| grep -q application/pdf' {} \; \
-exec sh -c 'pdftotext "$0" - 2>&-| grep -qi analogy' {} \; \
-exec sh -c 'pdftotext "$0" - 2>&-| grep -qi argument' {} \; \
-exec mv {} en_egen_mapp/ \;
Tanken är som följer:

find -maxdepth 1 letar reda på alla filer i den nuvarande katalogen.
-exec sh -c 'file -i "$0" 2>&-| grep -q application/pdf' {} \; plockar ut de som är pdf-filer.
-exec sh -c 'pdftotext "$0" - 2>&-| grep -qi analogy' {} \; plockar ut de som innehåller analogy.
-exec sh -c 'pdftotext "$0" - 2>&-| grep -qi argument' {} \; plockar ut de som innehåller argument.
-exec mv {} en_egen_mapp/ \; flyttar dem till en_egen_mapp/.
Ainigma
Inlägg: 803
Blev medlem: 26 sep 2007, 20:49
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS

Re: Sortera och flytta filer

Inlägg av Ainigma »

Ok, det är alltså struligare att uttrycka en konjunktion, det var synd. :P

Vad är exec kommandot förkortning för?
Ainigma
Inlägg: 803
Blev medlem: 26 sep 2007, 20:49
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS

Re: Sortera och flytta filer

Inlägg av Ainigma »

Kommandot:

Kod: Markera allt

pdftotext fil.pdf - | egrep "analogy|argument"

fungerade ej, jag fick följande felmeddelande:

andre@Megatron:~/websites/Pdf$ pdftotext fil.pdf - | egrep "analogy|argument"
Error: May not be a PDF file (continuing anyway)
Error: PDF file is damaged - attempting to reconstruct xref table...
Error: Couldn't find trailer dictionary
Error: Couldn't read xref table
andre@Megatron:~/websites/Pdf$ ^C
andre@Megatron:~/websites/Pdf$

???
Användarvisningsbild
ZX Spectrum
Inlägg: 4905
Blev medlem: 04 jan 2007, 22:58
OS: Ubuntu
Utgåva: Vet inte/ingen utgåva passar
Ort: Göteborg

Re: Sortera och flytta filer

Inlägg av ZX Spectrum »

Vad är det för skillnad på grep och egrep?
Bild
Jag vet vad jag vill, men vill inte det jag vet, men ändå vet jag ingenting och nu vet jag garanterat inte vad jag snackar om
Användarvisningsbild
dmz
Inlägg: 3292
Blev medlem: 29 jul 2008, 19:42
OS: Arch Linux

Re: Sortera och flytta filer

Inlägg av dmz »

Heter din fil verkligen 'fil.pdf' då?

egrep är samma sak som grep -E, dvs använd extended regular expressions vid matching. Att invoka det med just 'egrep' är dock deprecated. :p
ǁ A: Because it obfuscates the reading.
ǁ Q: Why is top posting so bad?
Ainigma
Inlägg: 803
Blev medlem: 26 sep 2007, 20:49
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS

Re: Sortera och flytta filer

Inlägg av Ainigma »

Men är det någon som förstår att tolka felmeddelandet?

???
Användarvisningsbild
dmz
Inlägg: 3292
Blev medlem: 29 jul 2008, 19:42
OS: Arch Linux

Re: Sortera och flytta filer

Inlägg av dmz »

Som jag precis sade, heter filen 'fil.pdf'?
ǁ A: Because it obfuscates the reading.
ǁ Q: Why is top posting so bad?
Ainigma
Inlägg: 803
Blev medlem: 26 sep 2007, 20:49
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS

Re: Sortera och flytta filer

Inlägg av Ainigma »

Nej det finns ingen sådan fil (om du menar de filer som ska genomsökas?) men tanken var ju att kommandot skulle ge en sökning av texterna i alla filer i en bestämd mapp och sortera ut dem som innehöll två ord (analogy & argument). Betyder detta att jag alltså måste skriva in namnet på varje fil som ska genomsökas i mappen? I så fall var det inte mycket värt för det går då nog fortare att öppna dem och se vad som står i deras abstract. Hade det varit få filer med mycket text hade kanske kommandot varit bra, men nu är det snarare tvärtom, många filer med en kort abstract som sammanfattar innehållet (och då finns troligtvis de sökta nyckelbegreppen med i den). Finns det inget kommando som söker av alla filer i en bestämd mapp, och som sorterar dem till en annan mapp? :)
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Sortera och flytta filer

Inlägg av Konservburk »

Ainigma skrev:Finns det inget kommando som söker av alla filer i en bestämd mapp, och som sorterar dem till en annan mapp? :)
Det är kommandot find du letar efter. Jag har redan visat dig hur du kan använda dig av det i precis det här fallet. Och ja, det blev ganska långt. Men det spelar egentligen ingen roll... du kan alltid lägga in det in en skriptfil, eller skapa ett alias (eller liknande) om du vill ha det kortare.
Användarvisningsbild
dmz
Inlägg: 3292
Blev medlem: 29 jul 2008, 19:42
OS: Arch Linux

Re: Sortera och flytta filer

Inlägg av dmz »

Kod: Markera allt

for x in *.pdf; do pdftotext $x|\grep -E 'analogy|argument';done
?
ǁ A: Because it obfuscates the reading.
ǁ Q: Why is top posting so bad?
Alleinsora
Inlägg: 378
Blev medlem: 24 maj 2007, 01:53
OS: Ubuntu
Utgåva: 22.04 Jammy Jellyfish LTS
Ort: Kalmar/Luleå
Kontakt:

Re: Sortera och flytta filer

Inlägg av Alleinsora »

Man borde också kunna köra detta för att flytta önskade filer till mappen mapp:

Kod: Markera allt

for fil in $(pdftotext *.pdf |grep -E 'analogy|argument' | sed s/":.*"/""/ -) do mv $fil mapp/; done
Senast redigerad av 1 Alleinsora, redigerad totalt 28 gånger.
Hur jag än gör så slutar det alltid med E17 på netbooken....
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Sortera och flytta filer

Inlägg av Konservburk »

Det bör nog påpekas att båda förslagen med for kommer att krackelera om det finns mellanrum eller andra konstiga tecken i något av filnamnen eftersom det saknas dubbelfunuttar runt variablerna.
Ainigma
Inlägg: 803
Blev medlem: 26 sep 2007, 20:49
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS

Re: Sortera och flytta filer

Inlägg av Ainigma »

Tanken är som följer:

find -maxdepth 1 letar reda på alla filer i den nuvarande katalogen.
-exec sh -c 'file -i "$0" 2>&-| grep -q application/pdf' {} \; plockar ut de som är pdf-filer.
-exec sh -c 'pdftotext "$0" - 2>&-| grep -qi analogy' {} \; plockar ut de som innehåller analogy.
-exec sh -c 'pdftotext "$0" - 2>&-| grep -qi analogy' {} \; plockar ut de som innehåller argument.
-exec mv {} en_egen_mapp/ \; flyttar dem till en_egen_mapp/.

Nu har jag äntligen fått tid att testa ditt förslag. Det fungerade utmärkt. Tackar så jättemycket! :D

Nu ska jag göra ett script eller alias till det. Finns det något skäl att föredra det ena framför det andra?
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Sortera och flytta filer

Inlägg av Konservburk »

Ainigma skrev:Nu ska jag göra ett script eller alias till det. Finns det något skäl att föredra det ena framför det andra?
Jag föreslår ett skript eller en skalfunktion. Då kan du skicka med orden som måste finnas i pdf-filerna som argument om du vill.
Skriv svar

Återgå till "Terminalforum"