Sida 1 av 2

Modifiering av mina unrar och del scripts

Postat: 28 nov 2008, 09:06
av zeezam
Såhär ser det ut nu, så simpelt som det kan bli.

unrar.sh

Kod: Markera allt

find -name *.rar -exec unrar x -y -r -v {} \; && find -name *mkv >> list.log
del.sh

Kod: Markera allt

find -name *.nfo -exec rm -fv {} \;
find -name *.sfv -exec rm -fv {} \;
find -name *.rar -exec rm -fv {} \;
find -name *.r?? -exec rm -fv {} \;
Nu så går dessa säkert dessa script göras mycket snyggare.
Det jag skulle vilja om man kuna baka ihop flera filer under under samma find -name sökning samt om det går att outputa all data som sökningen gör till en log fil istället för att köra find -name *mkv >> list.log.

Tack på förhand.

Re: Modifiering av mina unrar och del scripts

Postat: 28 nov 2008, 13:26
av palle-kuling
Jag ser ingen anledning till att skriva någon mer avancerad algoritm än vad du redan har gjort själv? Funkar det inte bra?
Vill du använda någon form av "villkor" i ditt script?

Om scriptet var på över 10 rader, samt att du behövde mer fin kontroll över händelseförloppet så kanske det skulle vara en idé.
Som dom brukar säga, KISS is best (keep it simple stupid).

Re: Modifiering av mina unrar och del scripts

Postat: 29 nov 2008, 04:00
av David Andersson
zeezam skrev:Nu så går dessa säkert dessa script göras mycket snyggare.
Nä, det går faktiskt inte. De är rätt snygga redan.

Men jag skulle vilja ta bort ett par buggar.

Det kräver först ett resonemang om vad scripten är tänkta att göra och hur de är tänkta att användas. Om unrar.sh är tänkt att användas a) i en katalog där det finns en rar-filer eller b) i en katalog där det inte finns rar-filer men den ska hitta och operera på rar-filer i underkataloger. Oavsett så är det bra om filnamns-mönster (såna med * och ?) avsedda för -name-argument till find inte expanderas av bash. Därför ska de omges av "" eller ''.

unrar.sh
find -name "*.rar" -exec unrar x -y -r -v {} \; && find -name "*mkv" >> list.log

Byt ut r?? till r[0-9][0-9] för att inte av misstag ta bort andra filer som råkar ha r i samma position. Antar att det bara är filer som matchar r[0-9][0-9] du vill ta bort:

del.sh
find -name "*.nfo" -exec rm -fv {} \;
find -name "*.sfv" -exec rm -fv {} \;
find -name "*.rar" -exec rm -fv {} \;
find -name "*.r[0-9][0-9]" -exec rm -fv {} \;

Re: Modifiering av mina unrar och del scripts

Postat: 29 nov 2008, 16:28
av zeezam
Tack för svaren.

Det enda som kvarstår är borttagning av mappar som ligger i underkataloger.
Borde gå att göra en liknande find -name rad fast som söker upp kataloger av ett visst namn och tar bort rekursivt.
2
Sedan så verkar de uppackade filerna hamna i samma mapp som scriptet körs ifrån, kanske för att jag använda "unrar e" istället för "unrar x".

Edit: Fixat med find -typ -d och -iname.

Det jag sedan vilja är en sökning av mappar som innehåller en viss fil och sedan flytta dessa mappar rekursivt till en annan mapp.

Re: Modifiering av mina unrar och del scripts

Postat: 29 nov 2008, 16:43
av dmz
zeezam skrev:Tack för svaren.

Det enda som kvarstår är borttagning av mappar som ligger i underkataloger.
Borde gå att göra en liknande find -name rad fast som söker upp kataloger av ett visst namn och tar bort rekursivt.
2
Sedan så verkar de uppackade filerna hamna i samma mapp som scriptet körs ifrån, kanske för att jag använda "unrar e" istället för "unrar x".

Kod: Markera allt

find -name "*.rar" -exec unrar x -y -r -v {} /mnt/TV/temp \; && find -name "*mkv" >> list.log

Re: Modifiering av mina unrar och del scripts

Postat: 29 nov 2008, 16:56
av dmz
När jag kör;

Kod: Markera allt

find -name "*.r[0-9][0-9]" -exec unrar x -vy {} /mnt/XViD/temp \;
Hamnar jag efter unrar i en fin liten loop;

Kod: Markera allt

/mnt/XViD/temp/coa-bdr5-xvid.avi already exists. Overwrite it ?
[Y]es, [N]o, [A]ll, n[E]ver, [R]ename, [Q]uit ^C
User break
Vad är fel i ovanstående? Det verkar inte som att den efter att ha utfört aktionen 1 gång breakear.

Re: Modifiering av mina unrar och del scripts

Postat: 29 nov 2008, 16:58
av KiviE
dmz skrev:När jag kör;

Kod: Markera allt

find -name "*.r[0-9][0-9]" -exec unrar x -vy {} /mnt/XViD/temp \;
Hamnar jag efter unrar i en fin liten loop;

Kod: Markera allt

/mnt/XViD/temp/coa-bdr5-xvid.avi already exists. Overwrite it ?
[Y]es, [N]o, [A]ll, n[E]ver, [R]ename, [Q]uit ^C
User break
Vad är fel i ovanstående? Det verkar inte som att den efter att ha utfört aktionen 1 gång breakear.
Den hittar väl först r00 sen r01, r02 osv...

Re: Modifiering av mina unrar och del scripts

Postat: 29 nov 2008, 16:59
av zeezam
dmz skrev:
zeezam skrev:Tack för svaren.

Det enda som kvarstår är borttagning av mappar som ligger i underkataloger.
Borde gå att göra en liknande find -name rad fast som söker upp kataloger av ett visst namn och tar bort rekursivt.
2
Sedan så verkar de uppackade filerna hamna i samma mapp som scriptet körs ifrån, kanske för att jag använda "unrar e" istället för "unrar x".

Kod: Markera allt

find -name "*.rar" -exec unrar x -y -r -v {} /mnt/TV/temp \; && find -name "*mkv" >> list.log
Ok, då får man inte med mappen utan bara mkv filen.

Re: Modifiering av mina unrar och del scripts

Postat: 29 nov 2008, 17:00
av zeezam
KiviE skrev:
dmz skrev:När jag kör;

Kod: Markera allt

find -name "*.r[0-9][0-9]" -exec unrar x -vy {} /mnt/XViD/temp \;
Hamnar jag efter unrar i en fin liten loop;

Kod: Markera allt

/mnt/XViD/temp/coa-bdr5-xvid.avi already exists. Overwrite it ?
[Y]es, [N]o, [A]ll, n[E]ver, [R]ename, [Q]uit ^C
User break
Vad är fel i ovanstående? Det verkar inte som att den efter att ha utfört aktionen 1 gång breakear.
Den hittar väl först r00 sen r01, r02 osv...
Du behöver skriva unrar x -v -y

Re: Modifiering av mina unrar och del scripts

Postat: 29 nov 2008, 17:08
av dmz
KiviE skrev:
dmz skrev:När jag kör;

Kod: Markera allt

find -name "*.r[0-9][0-9]" -exec unrar x -vy {} /mnt/XViD/temp \;
Hamnar jag efter unrar i en fin liten loop;

Kod: Markera allt

/mnt/XViD/temp/coa-bdr5-xvid.avi already exists. Overwrite it ?
[Y]es, [N]o, [A]ll, n[E]ver, [R]ename, [Q]uit ^C
User break
Vad är fel i ovanstående? Det verkar inte som att den efter att ha utfört aktionen 1 gång breakear.
Den hittar väl först r00 sen r01, r02 osv...
Mjo, tänkte inte på att unrar/rar packar upp rubbet oavsett vilken fil man väljer.

Re: Modifiering av mina unrar och del scripts

Postat: 29 nov 2008, 17:10
av dmz
zeezam skrev:
KiviE skrev:
dmz skrev:När jag kör;

Kod: Markera allt

find -name "*.r[0-9][0-9]" -exec unrar x -vy {} /mnt/XViD/temp \;
Hamnar jag efter unrar i en fin liten loop;

Kod: Markera allt

/mnt/XViD/temp/coa-bdr5-xvid.avi already exists. Overwrite it ?
[Y]es, [N]o, [A]ll, n[E]ver, [R]ename, [Q]uit ^C
User break
Vad är fel i ovanstående? Det verkar inte som att den efter att ha utfört aktionen 1 gång breakear.
Den hittar väl först r00 sen r01, r02 osv...
Du behöver skriva unrar x -v -y
Då får jag en ännu mer infinite loop; Jag får inget meddelande om att filen existerar utan den skrivs över automatiskt, och fortsätter att packa upp samma filer i alla evighet.

Re: Modifiering av mina unrar och del scripts

Postat: 29 nov 2008, 17:15
av dmz
Om jag istället för '*.r[0-9][0-9]' enbart använder '*.rar* kommer jag runt problemet, delvis; Men det är inte failsafe eftersom det i vissa fall är flertalet arkiv som heter t.ex blabla-part001.rar, blabla-part002.rar, ibland finns ingen *.rar alls, utan det finns bara *.r01 etc. Hur löser man detta så att det blir så failsafe som möjligt?

Re: Modifiering av mina unrar och del scripts

Postat: 29 nov 2008, 17:30
av zeezam
Varför packa upp part filerna när du har en .rar fil?

Re: Modifiering av mina unrar och del scripts

Postat: 29 nov 2008, 17:41
av dmz
zeezam skrev:Varför packa upp part filerna när du har en .rar fil?
Men ibland finns det ju som sagt ingen *.rar

Re: Modifiering av mina unrar och del scripts

Postat: 29 nov 2008, 18:52
av David Andersson
dmz skrev:Om jag istället för '*.r[0-9][0-9]' enbart använder '*.rar* kommer jag runt problemet, delvis; Men det är inte failsafe eftersom det i vissa fall är flertalet arkiv som heter t.ex blabla-part001.rar, blabla-part002.rar, ibland finns ingen *.rar alls, utan det finns bara *.r01 etc. Hur löser man detta så att det blir så failsafe som möjligt?
Det här känner jag igen ... hum hum ... sök part002.rar ... hum hum ... japp. I den här tråden finns tips om hur hitta bara första parten, men inte andra parten, men fortfarande onumrerade rar-filer: http://ubuntu-se.org/phpBB3/viewtopic.php?f=67&t=26376 Oj, 188 inlägg. Du får leta lite.

Re: Modifiering av mina unrar och del scripts

Postat: 30 nov 2008, 00:26
av dmz
David Andersson skrev:
dmz skrev:Om jag istället för '*.r[0-9][0-9]' enbart använder '*.rar* kommer jag runt problemet, delvis; Men det är inte failsafe eftersom det i vissa fall är flertalet arkiv som heter t.ex blabla-part001.rar, blabla-part002.rar, ibland finns ingen *.rar alls, utan det finns bara *.r01 etc. Hur löser man detta så att det blir så failsafe som möjligt?
Det här känner jag igen ... hum hum ... sök part002.rar ... hum hum ... japp. I den här tråden finns tips om hur hitta bara första parten, men inte andra parten, men fortfarande onumrerade rar-filer: http://ubuntu-se.org/phpBB3/viewtopic.php?f=67&t=26376 Oj, 188 inlägg. Du får leta lite.
Väntade just på dig. Ska kika. :)

Re: Modifiering av mina unrar och del scripts

Postat: 01 dec 2008, 08:32
av zeezam
Även fast jag använder unrar x så packar den upp filerna utanför katalogerna (därifrån jag kör unrar scriptet).
Behöver man lägga till en variabel eller så i scriptet för att den ska packa upp filerna i mapparna istället?

Re: Modifiering av mina unrar och del scripts

Postat: 01 dec 2008, 13:32
av dmz
zeezam skrev:Även fast jag använder unrar x så packar den upp filerna utanför katalogerna (därifrån jag kör unrar scriptet).
Behöver man lägga till en variabel eller så i scriptet för att den ska packa upp filerna i mapparna istället?

Kod: Markera allt

unrar e 

Re: Modifiering av mina unrar och del scripts

Postat: 02 dec 2008, 12:46
av Urme
Du kanske kan få lite hjälp av scriptet jag precis har skrivit, kör det just nu på runt ~50 mappar. Jag har kommenterat scriptet nedan.
Den flyttar dock inga filer etc.

Scriptet går säkert att kapa ner en hel del och göra snyggare.

Kod: Markera allt

STARTDIR="$PWD"; # Sätter startdir till nuvarande directory.
find . -type d | while read dir #hittar alla kataloger + subkataloger
do
        cd "$STARTDIR/$dir"; #Går in i första katalogen.
        echo '-Current movie:' "$dir"; #skriver ut sökvägen.
        find . -iregex '.*\.rar' -and -not -iregex '.*\.part[0-9]+.rar' -or -iregex '.*\.part0*1\.rar' -maxdepth 1 | while read RAR #Hittar alla filer som slutar på .rar, men exkluderar alla filer som heter part*.rar, förutom part0*1.rar. Den kollar bara första nivån, går inte igenom subkataloger här utan det kommer den göra i nästa "huvudloop".
        do (

           echo '---Unrar start:' "$PWD"/"${RAR##*/}" #Skriver ut vilken fil den packar upp
           unrar e -inul -o+  "${RAR##*/}" #Packar upp filen utan att skriva ut någonting, + skriver automatiskt över om filen redan existerar.
           echo '---Unrar finished:' "$PWD"/"${RAR##*/}" #Skriver ut när den är klar.
        ) done

        COUNTRARFILES=0; #En kontrollvariabel som sätts till 1 om rarfil hittas
        find . -iregex '.*\.rar' -or -iregex '.*\.r[0-9]+' -maxdepth 1 | while read RMRAR #Söker efter alla .rar och .r01, r02 etc, tar bara bort filer i den nuvarande katalogen, därav -maxdepth 1.
        do {
                if [ "$COUNTRARFILES" = 0 ]; then #Om variabeln är 0 skriver den ut nästa rad
                        echo '-----Removing all found rarfiles in' $PWD;
                        COUNTRARFILES=1; #Sätter variabeln till 1 så ovanstående rad inte skrivs ut hela tiden
                fi
                rm "${RMRAR##*/}" #Tar bort rar filen.
        } done
        cd "$STARTDIR"; # Går tillbaka till startkatalogen, egentligen onödigt.
done

Re: Modifiering av mina unrar och del scripts

Postat: 06 dec 2008, 20:03
av zeezam
Fungerade bra. Skulle vilja göra om det lite.

Vad står "${RAR##*/}" för? rar variabeln men vad gör ##*/ i sammanhanget?