Linux-Dateisystem
Ich habe ein Verzeichnis mit 1500 Ordnern. Ich möchte ein Excel-Dokument verwenden, das in einer Spalte die 1500 Ordnernamen und in der nächsten eine eindeutige ID enthält. Ich möchte ein Skript dafür erstellen, sodass das Skript die Ordner mit der neuen eindeutigen ID umbenennt. Kann mir jemand helfen? Das scheint ganz einfach zu sein, obwohl ich nicht weiß, wie man Skripte schreibt. Kann mir jemand einen Link zu einem Online-Skript bereitstellen (ich konnte keins finden).
Look at volume A for folder Var#1 (from excel)
if present on Volume A then mv Var#1 to Var#2 (from excel)
loop and grab next line of excel doc
Antwort1
Ok, hier ist es:
für i in $(cat test.csv)
Tun
dir1=$(echo $i|sed 's/,.*//')
dir2=$(echo $i|sed 's/.*,//')
if [ -d $dir1]
Dann
if [ -d $dir2 ]
Dann
echo $dir2 vorhanden, Verschiebung von $dir1 nach $dir2 überspringen
anders
mv $dir1 $dir2
fi
fi
Erledigt
Antwort2
Ich bin also ein Linux-, Unix- und Mac-Benutzer und schreibe Perl- und Bash-Skripte. Wenn Sie eine Power Shell oder Cygwin haben, können Sie Folgendes tun. Windows hat dies möglicherweise auch, aber erwarten Sie nichts:
Ich denke, Sie sollten in der Lage sein, dies zu nehmen und nach Ihren Wünschen zu modifizieren, ohne das Ganze selbst zu machen ...
- Speichern Sie Ihre Daten in einer CSV-Datei (somefile.csv).
- In einer Bash-Shell
bash> für temp_line in
cat somefile.csv
Tun
echo mv $temp_line |sed 's/,/ /'
fertig >somefile.sh
Führen Sie die folgende Zeile erst aus, wenn Sie sicher sind, dass sie das gewünschte Ergebnis liefert!
bash>. ./irgendeineDatei.sh
Das sollte es sein... Beachten Sie, dass dies ein schneller Hack ist. Er kann mit mehr Fehlerprüfungen und dergleichen geschrieben werden, und das kam spontan:) Ein weiteres Problem, auf das Sie stoßen könnten, sind Leerzeichen in den Datei-/Verzeichnisnamen. Fügen Sie einfach Anführungszeichen hinzu. Wenn Sie überprüfen müssen, ob das Verzeichnis vorhanden ist, können Sie eine if-Anweisung wie die folgende hinzufügen:
bash>wenn [ -d 'dir_name' ]; dann ... ;fi
Das sollten genug Nuggets sein, ohne dass ich sie aufschreibe. Vielleicht werde ich später inspiriert und schreibe dies in einen Folgebeitrag.
Antwort3
Das istkeine Antwort, aber ich gebe es als solches ein, weil Kommentare keine ordentliche Formatierung oder so viel Text zulassen.
Offensichtlich sind die Namen der vorhandenen Ordner eindeutig (vorausgesetzt, sie befinden sich entweder alle im selben übergeordneten Ordner oder werden als vollständige Pfadnamen angezeigt – wie von @nerdwaller angemerkt). Und die eindeutigen IDs in der zweiten Spalte sind per Definition eindeutig. Sind die beiden Spalten eindeutig (überlappen sich nicht)? Betrachten Sie die folgenden Daten:
Alter Name Neue eindeutige ID Sein oder Nichtsein, 1 das_ist_die_Frage. 2 Der_schnelle_braune_Fuchs 3 springt_über_den_faulen_Hund. 4 ⋮ ⋮ Es war einmal Mitternacht, 40 während_ich_nachdachte, 41 schwach_und_müde, 42 ⋮ ⋮ Die_Antwort_auf_die 56 ultimative_frage_des_lebens, 57 das_Universum_und_alles_ist 58 42 59 Und_so_weiter... 60
Wenn Sie versuchen, weak_and_weary,
in umzubenennen 42
, kommt es zu einem Konflikt mit dem vorhandenen 42
Ordner. Die beste Lösung besteht wahrscheinlich darin, die alten Ordnernamen auf Namen zu überprüfen, die dem Muster der eindeutigen IDs entsprechen, und diese manuell zu bearbeiten.