David Andersson skrev:Jag ska fundera en stund och återkommer.
Sådär. En kommandorad att flytta ner filer, och en att flytta upp om du ångrar dig.
Ner
Flytta filer i aktuell katalog till en underkatalog. Filer matchande "x - y" kommer att heta x/y. Katalog x skapas om den inte finns. Om filen x/y redan finns så skrivs den inte över ("x - y" blir kvar).
Kod: Markera allt
ls -d Titiyo' - '* | sed 's/ - /\//' | while IFS=/ read x y; do mkdir -p "$x"; yes no | mv -i "$x - $y" "$x/$y"; done
Upp
Flytta filer från en underkatalog till aktuell katalog. Filer matchande x/y kommer att heta "x - y". Katalog x tas bort om den blev tom. Om filen "x - y" redan finns så skrivs den inte över (x/y blir kvar).
Kod: Markera allt
ls -d Titiyo/* | while IFS=/ read x y; do yes no | mv -i "$x/$y" "$x - $y"; rmdir --ignore-fail-on-non-empty "$x"; done
Byt ut Titiyo i båda kommandoraderna ovan mot det artistnamn du för tillfället vill flytta omkring. Du kan byta det mot * om du fill flytta alla filer ner (eller upp). Mönstret blir då *' - '*.
Förklaring
ls -d Om mönstret matchar kataloger så lista bara katalogens namn, inte innehåll. Resten av logiken bör då fungera "normalt". Dvs en katalog som heter "Titiyo - bildmapp" kommer att flyttas ner till "Titiyo/bildmapp". Eftersom alla matchar "borde vara" vanliga filer så behövs inte -d, men om det finns nån katalog som matchar så är det bättre att bearbeta det analogt än att bugga ur.
mv -i Fråga innan den skriver över en fil som redan existerar. Förväntar sig svaret "y" eller "yes". Allt som inte börjar "y" tolkas som "no".
yes no Skriv noll eller flera "no"
yes no | mv -i Skriv inte över en fil som redan existerar. Det visas en fråga i terminalen, men den ska man inte svara på manuellt.
mkdir -p Ge inget fel om katalogen inte finns (och skapa ev föräldrakataloger om de inte finns, men det använder vi oss inte av här).
IFS=/ read x y Läs en rad från standard in, dela up vid / och spara i variablerna x och y. Default IFS är att dela upp vid space (blank, tab, nyrad).
Katalog När jag säger katalog så menar jag det alla andra kallar mapp.