
Sortera och flytta filer
Sortera och flytta filer
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? 

-
- 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
Det här är en start, resten lämnas som en övning åt läsaren

Kod: Markera allt
pdftotext fil.pdf - | egrep "analogy|argument"
Re: Sortera och flytta filer
Blir det då alltså konjunktionen av analogy och argument ? 

- Konservburk
- Inlägg: 5919
- Blev medlem: 07 apr 2007, 22:28
Re: Sortera och flytta filer
Nej, inklusiv disjunktion är vad det blir.Ainigma skrev:Blir det då alltså konjunktionen av analogy och argument ?
-
- 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
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".Ainigma skrev:Blir det då alltså konjunktionen av analogy och argument ?
Jag hoppas att det blev det rätt nu, det var ett tag sedan jag läste logik

Re: Sortera och flytta filer
Så om jag vill ha en konjunktion av begrepp vad skriver jag då? 

- Konservburk
- Inlägg: 5919
- Blev medlem: 07 apr 2007, 22:28
Re: Sortera och flytta filer
Otestat förslag...
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/.
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/ \;
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/.
Re: Sortera och flytta filer
Ok, det är alltså struligare att uttrycka en konjunktion, det var synd.
Vad är exec kommandot förkortning för?

Vad är exec kommandot förkortning för?
Re: Sortera och flytta filer
Kommandot:
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$

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$

- 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
Vad är det för skillnad på grep och egrep?
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
Re: Sortera och flytta filer
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
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?
ǁ Q: Why is top posting so bad?
Re: Sortera och flytta filer
Men är det någon som förstår att tolka felmeddelandet?


Re: Sortera och flytta filer
Som jag precis sade, heter filen 'fil.pdf'?
ǁ A: Because it obfuscates the reading.
ǁ Q: Why is top posting so bad?
ǁ Q: Why is top posting so bad?
Re: Sortera och flytta filer
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? 

- Konservburk
- Inlägg: 5919
- Blev medlem: 07 apr 2007, 22:28
Re: Sortera och flytta filer
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.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?
Re: Sortera och flytta filer
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?
ǁ Q: Why is top posting so bad?
-
- 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
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....
- Konservburk
- Inlägg: 5919
- Blev medlem: 07 apr 2007, 22:28
Re: Sortera och flytta filer
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.
Re: Sortera och flytta filer
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!

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?
- Konservburk
- Inlägg: 5919
- Blev medlem: 07 apr 2007, 22:28
Re: Sortera och flytta filer
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.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?