Batch find och deleta filer

Tråden skapades och har fått 4 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • Älvkarleby
  • 2021-01-15 11:04

Jag har 50 000 + bilder på min Synology NAS 16TB, nu har den crashat, jag kan fortfarande rädda filerna, men vid kopiering av mina bilder visar det sej att väldigt många (tusentals) har mindre versioner, (20-50kB) med samma namn fast med ext. .jpg istället för .JPG som orginalversionen. Och vid kopiering så funkar inte detta utan den disk jag kopierar till (8TB La Cie) tar bara den mindre versionen.
Tydligen så skiljer NAS disken på stora och små bokstäver och tillåter samma filnamn.

Fråga då, finns det nåt bra batch program som kan hitta alla dessa (i en oändlig mappstruktur...) och deleta alla 20kB versioner av mina bilder? Annars får jag manuellt gå in i mappstrukturen, hitta alla små bilder med .jpg och slänga dom, tar väl några veckor...

  • Medlem
  • Strängnäs
  • 2021-01-15 11:54

Om du inte är rädd för terminalen så skulle du kunna söka efter alla filer som slutar på .jpg och lägga dem i en fil. Nånting i den hr stilen kan du skriva:

find /path/till/extern/disk -name '*.jpg'

Där du byter ut /path/till/extern/disk mot pathen till disken där filerna ligger.

När du tycker det ser rätt ut så kan du spara utdatat till en fil:

find /path/till/extern/disk -name '*.jpg' > filer-att-radera

När du tycker att det ser rätt ut så kan du sen använda den filen som indata för att radera filerna.

Personligen skulle jag nog istället leta efter de filer jag vill kopiera (så att jag inte raderar nåt av misstag).

find /path/till/extern/disk -name '*.JPG' > filer-att-kopiera

Sen kan du använda den filen som indata till något script som kopierar filerna dit du vill ha dem.

Om du tycker det är svårt att skriva ett script så kan du istället med någon texteditor modifiera filen så att det på varje rad istället står kommandot du vill köra direkt:

cp fran-fil till-fil

Här brukar jag ibland använda excel för att importera listan och sen duplicera/extrahera/modifiera texten.

Det finns säkert flera här som kan hjälpa till med att utveckla detta.

  • Medlem
  • Älvkarleby
  • 2021-01-15 13:07
Ursprungligen av stralis:

Om du inte är rädd för terminalen så skulle du kunna söka efter alla filer som slutar på .jpg och lägga dem i en fil. Nånting i den hr stilen kan du skriva:

find /path/till/extern/disk -name '*.jpg'

Där du byter ut /path/till/extern/disk mot pathen till disken där filerna ligger.

När du tycker det ser rätt ut så kan du spara utdatat till en fil:

find /path/till/extern/disk -name '*.jpg' > filer-att-radera

När du tycker att det ser rätt ut så kan du sen använda den filen som indata för att radera filerna.

Personligen skulle jag nog istället leta efter de filer jag vill kopiera (så att jag inte raderar nåt av misstag).

find /path/till/extern/disk -name '*.JPG' > filer-att-kopiera

Sen kan du använda den filen som indata till något script som kopierar filerna dit du vill ha dem.

Om du tycker det är svårt att skriva ett script så kan du istället med någon texteditor modifiera filen så att det på varje rad istället står kommandot du vill köra direkt:

cp fran-fil till-fil

Här brukar jag ibland använda excel för att importera listan och sen duplicera/extrahera/modifiera texten.

Det finns säkert flera här som kan hjälpa till med att utveckla detta.

Tack för tips. Lite skraj är jag med terminalen. Ett problem är ju att inte alla .jpg skall raderas, dom flesta är orginalfiler. Det är bara i vissa mappar som det ligger dubbla filer i med samma namn. En idé vore ju att söka på hela fotomappen för filer under 50kB. Då är det preview filer och inte orginalbilderna.

Hittade på Appstore ett program som heter Commander One, filemanager, testar lite med det.

Kan du inte använda Finder och söka efter bilder med en filstorlek på under X KB för att få en lista med filer som du kan radera direkt därifrån?

Annars går det på kommandoraden också med ett kommando liknande

Citat:

find /sökväg/till/katalog/att/söka/i -size -100k -type f

för att hitta filer under 100kb. Lägg till -name '*.jpg' (eller -iname för skiftlägesokänslig sökning) för att bara hitta jpegfiler. Om man vill att find ska ta bort filerna med kan man lägga till -delete (osäker på om det finns i inbyggda find eller om det bara är GNU varianten)

  • Medlem
  • Älvkarleby
  • 2021-01-15 21:05
Ursprungligen av suddgummi:

Kan du inte använda Finder och söka efter bilder med en filstorlek på under X KB för att få en lista med filer som du kan radera direkt därifrån?

Annars går det på kommandoraden också med ett kommando liknande
för att hitta filer under 100kb. Lägg till -name '*.jpg' (eller -iname för skiftlägesokänslig sökning) för att bara hitta jpegfiler. Om man vill att find ska ta bort filerna med kan man lägga till -delete (osäker på om det finns i inbyggda find eller om det bara är GNU varianten)

Ja, jävlar! Hade ingen aning om att det funkade att söka på File size i Finder.
Kollade nu, och det fanns ju en väldans massa sökmöjligheter som jag inte visste om...efter 30 år med Mac
Nu lärde jag mej nåt nytt. Tack så mycket!

1
Bevaka tråden