Ordner mithilfe eines Skripts und Variablen aus einem Excel-Dokument umbenennen

Ordner mithilfe eines Skripts und Variablen aus einem Excel-Dokument umbenennen

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 incat 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 42Ordner. 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.

verwandte Informationen