huwich
Goto Top

MacOS, Bash, Terminal: Wie sammle ich gleichnamige Ordner und verschiebe sie an einen zentralen Ort?

Hallo zusammen

Ich stehe vor einer stets wiederkehrenden Problemsituation und suche eine Lösung.

Ausgangslage:

/Volumes/Work/Projekt ABC/99 Ausschuss
(und in jedem Projektordner hat es auch noch andere Ordner, die bleiben unangetastet)
/Volumes/Work/Projekt DEF/99 Ausschuss
/Volumes/Work/Projekt GHI/99 Ausschuss

Ich möchte nun möglichst mit einem kleine Script alle "99 Ausschuss"-Ordner auf ein seperates Volume verschieben. Dabei müsste der Name des übergeordneten Ordners mitgenommen werden.

Ergebnis:

/Volumes/Ausschuss/Projekt ABC/99 Ausschuss
/Volumes/Ausschuss/Projekt DEF/99 Ausschuss
/Volumes/Ausschuss/Projekt GHI/99 Ausschuss

Der Script müsste also rekursiv ein Volume nach einem definierten Ordnernamen durchforsten, und sich jeweils den übergeordneten Ordnernamen "merken", dann auf dem Zielvolume einen Ordner mit dem übergeordneten Ordnernamen anlegen und dann den Ordner dort rein verschieben.

Kann mir da wer weiterhelfen?

Liebe Grüsse
Michael

Content-Key: 574937

Url: https://administrator.de/contentid/574937

Printed on: April 18, 2024 at 22:04 o'clock

Member: tomolpi
tomolpi May 27, 2020 updated at 07:14:36 (UTC)
Goto Top
Hallo Michael,

wie wäre es, wenn du dir einfach den Work Ordner kopierst und dann in Ausschuss umbenennst?
Alternativ kannst du auch, wenn ich dich nicht komplett falsch verstanden habe, einfach den Inhalt von Work rekursiv nach Ausschuss kopieren, oder? Da muss sich eigentlich nichts "gemerkt" werden, oder?

Grüße

tomolpi
Member: huwich
huwich May 27, 2020 at 07:22:10 (UTC)
Goto Top
Hi Tomolpi

Idee gut, aber nicht ganz so möglich.

Das Problem ist, dass in dem Work-Ordner ja noch weitere Ordner liegen. Es geht um Fotoprojekte. Da gibts die finalen Bilder, Lightroom-Ordner etc.... und eben jeweils die ausgemisteten, welche ich konsequent in einen Ordner namens "99 Ausschuss" lege. Diese werden nach einer gewissen Wartefrist dann definitiv gelöscht, vorher verschiebe ich sie bisher manuell auf eine "Ausschuss"-HDD.

Gruss MIchael
Member: godlie
Solution godlie May 27, 2020 at 07:46:02 (UTC)
Goto Top
Hallo,

das ist relativ einfach:

#!/bin/sh
for i in `ls -d script/*`;
    do echo $i;
done;

Ausgabe:
script/a
script/b

damit bekommst du alle Ordner von script/ in der Variable $i, damit hast du deinen "ProjektOrdner"
Mitglied: 144260
Solution 144260 May 27, 2020 at 09:08:12 (UTC)
Goto Top
#!/bin/sh
source="/Volumes/Work"  
target="/Volumes/Ausschuss"  
find "$source" -type d -name '99 Ausschuss' -print0 | while read -d $'\0' folder  
do
        targetdir="$(dirname "$folder")"   
        targetdir="$target${targetdir##$source}"  
        mkdir -p "$targetdir"                           
        mv "$folder" "$targetdir"  
done
Member: huwich
huwich May 27, 2020 at 10:19:55 (UTC)
Goto Top
Grossartig! Genau das wars....
Dank sei auf ewig dein!
Member: huwich
huwich May 27, 2020 at 10:20:51 (UTC)
Goto Top
Dankeschön. Das hilft mir weiter...