Skript zum Erkennen von Dateinamen bis zum Symbol "-" und Erstellen eines Ordners mit demselben Namen. Verschieben Sie alle Dateien in diesen Ordner.

Skript zum Erkennen von Dateinamen bis zum Symbol "-" und Erstellen eines Ordners mit demselben Namen. Verschieben Sie alle Dateien in diesen Ordner.

ich habe das

/Folder1/108462-2.jpg
/Folder1/108462-3.jpg
/Folder1/BSR2333-1.jpg
/Folder1/BSR2333-2.jpg
/Folder1/DKS23108554-1.jpg
/Folder1/DKS23108554-2.jpg

Ich hätte gerne folgendes:

/108462/108462-2.jpg
/108462/108462-3.jpg
/BSR2333/BSR2333-1.jpg
/BSR2333/BSR2333-2.jpg
/DKS23108554/DKS23108554-1.jpg
/DKS23108554/DKS23108554-2.jpg

Ich habe das gesehen;

do if [[ -f "$file" ]]; then mkdir "${file:0:9}" mv "$file" "${file:0:9}"; fi; done 

aber das reicht nicht ganz...

Aber wie kann ich das Problem beheben, indem ich den gesamten Namen bis zum "-" verwende, um einen Ordner zu erstellen und Dateien in diesen Ordner zu legen? Vielen Dank im Voraus, bin noch sehr neu bei Mac Terminal

Antwort1

/Folder1Basierend auf der Beschreibung möchten Sie den Anfangsbuchstaben des Dateinamens vom Namen der Datei im Ordner bis zum -Anfangsbuchstaben des Dateinamens ändern .

Dies ist ein primitives Beispiel mitaussagekräftige Variablennamenfür lesbaren Code.

#! /bin/bash

pathname=/Folder1/108462-2.jpg
newfolder="$(dirname "$pathname")"
newfolder="${newfolder/-.*$//}"
filenamepartofpathname="$(basename $pathname)"
newpathname="$newfolder/$filenamepartofpathname"
echo "$newpathname"

Shellcheckerzeugt keine Ausgabe:

$ shellcheck primitive-example.sh
(no output)
$ ./primitive-example.sh
/108462/108462-2.jpg

-Beachten Sie, dass Sie das primitive Beispiel möglicherweise anpassen müssen, wenn die Datei mehr als eines enthält .

Sie können auch „Codegolf“ ausprobierenhttps://codegolf.stackexchange.com/um Hilfe zu bekommen, wie man es weniger primitiv, aber weniger lesbar macht.

verwandte Informationen