Flytta filer av en viss typ från alla undermappar till en separat mapp utan undermappar?

Permalänk
Medlem

Flytta filer av en viss typ från alla undermappar till en separat mapp utan undermappar?

Hej!

Jag har stött på ett problem som jag inte vet hur jag ska lösa. Jag har en mapp, med runt 3500 undermappar som i sin tur har en massa undermappar och i varje sista undermapp så finns det en fil av en viss filtyp som jag vill åt. Totalt så handlar det om runt 30000-35000 filer som jag vill ta ut ur sin undermappstruktur så det är uppenbarligen inget jag kan sitta och göra manuellt.

Något säger mig att det borde vara ganska enkelt att skriva ihop någon kod som gör detta åt mig. Jag är dock helt grön inom detta och jag sitter på en MBA med Mac OS X som jag är ännu mer grön på.

Om någon skulle vilja hjälpa mig med detta så vore det fantastiskt. För att underlätta ännu mer så finns mappen med alla undermappar på /Users/Niklas/Desktop/1 och mappen jag vill flytta alla dessa filer till, utan undermappstruktur, finns på /Users/Niklas/Desktop/2

Tack på förhand!

Visa signatur

O2+ODAC - Denon AH-D2000
MiniDSP SHD - Emotiva UPA1 - Had Oy högtalare

Permalänk
Medlem

Absolut enklast vore väl att göra en sökning högst upp i katalogstrukturen efter t.ex. .jpg och sedan kopiera resultatet till en ny mapp?

Visa signatur

Mitt modermodem är trimmat!

Permalänk
Medlem
Skrivet av HCP:

Absolut enklast vore väl att göra en sökning högst upp i katalogstrukturen efter t.ex. .jpg och sedan kopiera resultatet till en ny mapp?

Du... Du är rätt smart du

Visa signatur

O2+ODAC - Denon AH-D2000
MiniDSP SHD - Emotiva UPA1 - Had Oy högtalare

Permalänk
Hedersmedlem

find /Users/Niklas/Desktop/1 -type f -iname '*.jpg' -exec echo {} /Users/Niklas/Desktop/2 \;

Ifall du kör ovanstående och det verkar hitta rätt filer (alla med ändelse `.jpg` i detta fall), så byt ut `echo` mot `cp` eller `mv` för att kopiera respektive flytta filerna.

På Mac OS X så har du vanligen inte `GNU find`, men ovanstående ska duga för OS Xs POSIX-variant. Kommandot tar också hänsyn till filnamn med mellanslag, etc.

Visa signatur

Nu med kortare användarnamn, men fortfarande bedövande långa inlägg.

Permalänk
Medlem
Skrivet av phz:

find /Users/Niklas/Desktop/1 -type f -iname '*.jpg' -exec echo {} /Users/Niklas/Desktop/2 \;

Ifall du kör ovanstående och det verkar hitta rätt filer (alla med ändelse `.jpg` i detta fall), så byt ut `echo` mot `cp` eller `mv` för att kopiera respektive flytta filerna.

På Mac OS X så har du vanligen inte `GNU find`, men ovanstående ska duga för OS Xs POSIX-variant. Kommandot tar också hänsyn till filnamn med mellanslag, etc.

Tackar så mycket men HCPs förslag funkade också

Visa signatur

O2+ODAC - Denon AH-D2000
MiniDSP SHD - Emotiva UPA1 - Had Oy högtalare

Permalänk
Hedersmedlem
Skrivet av Kalium:

Tackar så mycket men HCPs förslag funkade också

Att det löste sig är givetvis prio. Vill du (eller någon annan) göra något mer avancerat i framtiden så är `find` bra att känna till. Dels så är det närapå godtyckligt utbyggbart på egen hand (full namnmatchning med reguljära uttryck, tidsstämplar, rättigheter, storlek, katalogdjup, and/or/not-logik, etc.), och i kombination med t ex `grep` så kan man snabbt göra riktigt kraftfulla saker.

Jag minns dock att jag tyckte det var ordentligt bökigt första gången jag använde det. Efter att ha sett några exempel så trillar dock polletten ner, och sedan är det bara att köra.

Visa signatur

Nu med kortare användarnamn, men fortfarande bedövande långa inlägg.