Skript för att radera/flytta filer som saknar matchande par

Här diskuterar vi skal, kommandon och klassiska linuxverktyg.
TicToc
Inlägg: 2266
Blev medlem: 27 dec 2006, 17:28
OS: Kubuntu
Utgåva: 20.04 Focal Fossa LTS

Skript för att radera/flytta filer som saknar matchande par

Inlägg av TicToc »

Hej,

Det regnar för fullt så det passar bra att jobba med fotosamlingen. :)
Jag har just börjat använda digikam och har stött på ett litet problem som ett skalskript kan lösa, men jag kan det inte. :(

Finns det någon här som enkelt kan sno ihop något som raderar/flyttar alla raw-filer som saknar matchande jpg i given eller aktuell katalog?

Ex. För
img001.cr2
img001.jpg
img002.cr2
img003.cr2
img003.jpg

flyttas/raderas img002.cr2.

En alternativ lösning som fungerar i digikam, dolphin eller krusader är också välkommen.
David Andersson
Inlägg: 1269
Blev medlem: 15 dec 2007, 03:20
OS: Xubuntu

Re: Skript för att radera/flytta filer som saknar matchande

Inlägg av David Andersson »

(tänker högt) Loopa över alla *.cr2. Kolla om samma filnamn med .jpg i stället för .cr2 existerar. Om inte, flytta filen till underkatalog "omaka". Loopa med "for i in *.cr2". Byta filtyp i filnamn med "${variabel/from/to}" eller "${variabel/%from/to}". Den första är enklare men den med andra, med %, garanterar att bytet bara sker i slutet (om det skulle finnas filer med .cr2 mitt i namnet). Kolla om fil inte existerar med "! [ -e filnamn ]" eller "[ ! -e filnamn ]" eller "! test -e filnamn" eller "test ! -e filnamn". (Alla verkar funka, svårt att välja. Jag tar den andra. Nej den första. Nej föresten, den andra.) Flytta fil med "mv filnamn omaka". Glöm inte att skapa undermapp "omaka" innan. Jag lägger till / på omaka så det blir felmeddelande om man ändå skulle glömma. Alltså "mv filnamn omaka/".

Börja med att öppna en terminal i mappen med bilder eller gå till mappen med cd. Sedan såhär:

Kod: Markera allt

mkdir omaka
for i in *.cr2; do if [ ! -e "${i/%.cr2/.jpg}" ]; then mv "$i" omaka/; fi; done
(Har satt "" runt variabler ovan precis där det behövs för att ovanstående ska funka även om det finns mellanslag i filnamn.)
TicToc
Inlägg: 2266
Blev medlem: 27 dec 2006, 17:28
OS: Kubuntu
Utgåva: 20.04 Focal Fossa LTS

Re: Skript för att radera/flytta filer som saknar matchande

Inlägg av TicToc »

Stort tack! Det funkar fint och nu har jag en bra stomme att bygga vidare på.
Skriv svar

Återgå till "Terminalforum"