Syntaxfehler in der Nähe des unerwarteten Tokens „(“ beim Versuch, Dateien zu verschieben

Syntaxfehler in der Nähe des unerwarteten Tokens „(“ beim Versuch, Dateien zu verschieben

Ich versuche also, der Lösung aus diesem Thread zu folgen:CMD-Befehl zum Erstellen eines Ordners für jede Datei und Verschieben der Datei in den Ordnerda ich dasselbe tun möchte, was der OP dieses Threads wollte.

Ich habe die Ordner manuell erstellt, bevor ich diesen Thread gefunden habe.

Wenn ich jedoch versuche, for %i in (*) do move "%i" "%~ni"jede Datei in den entsprechenden Ordner zu legen, erhalte ich die folgende Fehlermeldung:

bash: syntax error near unexpected token `('

Meine Dateien heißen wie folgt: x01.sql, x02.sql, x03.sql... Ordner heißen dementsprechend x01, x02, x03 usw. Ihre Namen enthalten keine Leerzeichen, Sonderzeichen oder Nicht-ASCII-Zeichen. Ich verwende GNU Bash Version 5.0.7(1).

Wie behebe ich den Fehler und verschiebe die Dateien jeweils in einen eigenen Ordner?

Antwort1

GNU Bash und Windows CMD sind unterschiedliche Einheiten. Dies CMD-Befehl zum Erstellen eines Ordners für jede Datei und Verschieben der Datei in den Ordnerist für Windows CMD.

Für GNU Bash können Sie folgenDas

Antwort2

es sieht so aus, als ob Sie versuchen, einen Windows-Batch-Befehl in GNU Bash auszuführen. Deshalb funktioniert es nicht. Verwenden Sie, wie „Saurabh P Bhandari“ vorgeschlagen hat, die folgenden Ausschnitte aus diesem Link: https://unix.stackexchange.com/questions/219991/wie-erstelle-ich-ein-verzeichnis-für-jede-datei-in-einem-übergeordneten-verzeichnis Stellen Sie sicher, dass Sie zuerst mit cd in den übergeordneten Ordner wechseln.

for x in ./*.txt; do
  mkdir "${x%.*}" && mv "$x" "${x%.*}"
done

verwandte Informationen