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-ID: 574937

Url: https://administrator.de/forum/macos-bash-terminal-wie-sammle-ich-gleichnamige-ordner-und-verschiebe-sie-an-einen-zentralen-ort-574937.html

Ausgedruckt am: 17.04.2025 um 05:04 Uhr

tomolpi
tomolpi 27.05.2020 aktualisiert um 09:14:36 Uhr
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
huwich
huwich 27.05.2020 um 09:22:10 Uhr
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
godlie
Lösung godlie 27.05.2020 um 09:46:02 Uhr
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"
144260
Lösung 144260 27.05.2020 um 11:08:12 Uhr
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
huwich
huwich 27.05.2020 um 12:19:55 Uhr
Goto Top
Grossartig! Genau das wars....
Dank sei auf ewig dein!
huwich
huwich 27.05.2020 um 12:20:51 Uhr
Goto Top
Dankeschön. Das hilft mir weiter...