2017-04-12 6 views
0

Ich bin auf der Suche nach einem Skript, um etwa 800 Dateien mit separaten Fallnummern ex: "1234567 - XXXX XXX" von denen in einem Ordner, in eine Verzeichnis eines anderen Ordners (ein Server) mit dem gleichen Fall Namen, unter einem Unterordner ex:OSX: Kopieren von Dateien in Ordner mit dem gleichen Namen

"1234567 - XXXX XXX/01_Management/01_Correspondence" (Unterordner identisch für alle Ordner)

Sum up: Kopieren einer Datei , in einen anderen Ordner mit dem gleichen Namen wie die Datei und legt ihn in einem Unterordner ab.

macOS Sierra

Danke -Theis

+0

die Zielverzeichnisse bereits existieren, wo die Dateien kopiert werden müssen? Haben die Dateinamen immer genau eine mehrstellige Zahl (keine Buchstaben) gefolgt von einem Leerzeichen und einem Bindestrich? –

Antwort

0

Sie, dass mit einem bash Skript tun könnte.

Zuerst eine Sicherungskopie erstellen!

Speichern Sie die folgenden in Ihrem HOME-Verzeichnis als reorganise:

#!/bin/bash 

find $(pwd) -name "* -*" -print0 | while read -d $'\0' f; do 
    echo Processing file $f... 
    base=$(basename "$f") 
    echo " base: $base" 
    case=${base/ -*/} 
    echo " case: $case" 
    # EDIT THE FOLLOWING LINE TO BE CORRECT FOR YOU !!! 
    newplace="/path/to/new/place/$case" 
    echo mkdir -p "$newplace" 
    echo cp "$f" "$newplace" 
done 

Dann Terminal starten und die folgenden nur einmal eingeben, um das Skript ausführbar zu machen:

chmod +x reorganise 

in das Verzeichnis dann, wo Ihre Dateien sind:

cd where/your/files/are 

Und dann Sie können das Skript mit ausführen:

$HOME/organise 

und es wird Ihnen sagen, was es tun würde, ohne etwas zu tun. Wenn es Ihnen gefällt, können Sie das Wort echo in der zweiten und dritten bis letzten Zeile entfernen und es erneut ausführen.

Sie müssen mindestens die angegebene Zeile bearbeiten.

Beispielausgabe

Processing file /Users/mark/tmp/1234563 - fredb... 
    base: 1234563 - fredb 
    case: 1234563 
mkdir -p /path/to/new/place/1234563 
cp /Users/mark/tmp/1234563 - fredb /path/to/new/place/1234563 
Processing file /Users/mark/tmp/1234567 - fred... 
    base: 1234567 - fred 
    case: 1234567 
mkdir -p /path/to/new/place/1234567 
cp /Users/mark/tmp/1234567 - fred /path/to/new/place/1234567 
Verwandte Themen