Wie lautet die Bash-Syntax zum Erstellen eines neuen Verzeichnisses im obigen Verzeichnis?

Wie lautet die Bash-Syntax zum Erstellen eines neuen Verzeichnisses im obigen Verzeichnis?

Ich möchte ein Skript für mogrify erstellen. Der Befehl mogrify ändert die Größe von Bildern in einem Verzeichnis und legt die skalierten Bilder in einem Verzeichnis auf derselben Verzeichnisebene ab, mit demselben Namen wie das Arbeitsverzeichnis, aber mit einem Suffix (_a).

Das neue Verzeichnis wird später in eine andere Sammlung verschoben. Etwa so:

#!/bin/bash  
mkdir ../n_a
for file in *{.JPG|.jpg}; do mogrify -path ../n_a -resize 1200x1200 -quality 96;done

Ich vermute, dass ../ das übergeordnete Verzeichnis bezeichnet, wenn in einem untergeordneten Verzeichnis gearbeitet wird, aber ich brauche hier Hilfe.

Bearbeiten: „n“ muss durch die Syntax für den Arbeitsverzeichnisnamen ersetzt werden. Entschuldigung, auch in der dritten Skriptzeile gab es einen Tippfehler, es hätte n und nicht x heißen sollen.

Edit2: Dieses Skript macht genau das, was ich brauche, und es ist geräuschlos.

#!/bin/bash
DEST="../${PWD##*/}_a"
mkdir -p $DEST
mogrify -path $DEST -resize 1200x1200 -quality 96 *.jpg *.JPG

danke an vgoff für die korrekte PWD-Syntax und cesarerivahttp://www.cesareriva.com/archives/722für die Anzeige der DEST-Funktion.

Etwas anderes:

${PWD##*/}_a   

beachtet Leerzeichen im Verzeichnisnamen nicht und das Skript schlägt fehl. Im selben Verzeichnis wie die Bilder wird ein leeres Verzeichnis erstellt.

Habe es jetzt herausgefunden, es braucht auch Anführungszeichen bei $DEST, vermutlich um mkdir zu helfen, das Verzeichnis mit einem Leerzeichen im Namen zu erstellen, und mogrify, die Dateien an die richtige Stelle zu schreiben, so wie hier

#!/bin/bash
DEST="../${PWD##*/}_a"
mkdir -p "$DEST"
mogrify -path "$DEST" -resize 1200x1200 -quality 96 *.jpg *.JPG

Edit3: Brauche nicht mal ein Skript dafür, d.h.

mkdir ../${PWD##*/}_a && mogrify -path ../${PWD##*/}_a -resize '1200x1200>' -quality 95 *{.jpg|.JPG}

Antwort1

Ich vermute, dass ../ das übergeordnete Verzeichnis bezeichnet, wenn in einem untergeordneten Verzeichnis gearbeitet wird, aber ich brauche hier Hilfe.

Sie haben richtig geraten.

„n“ muss durch die Syntax für den Arbeitsverzeichnisnamen ersetzt werden.

Aha. In diesem Fall pwdwird der Befehl Ihr Freund sein. Füllen Sie eine Variable damit oder verwenden Sie die $PWDVariable

Antwort2

Ja. Es ist das übergeordnete Verzeichnis.

Eine Anmerkung: Dies ist nicht spezifisch für Bash. Es ist nicht einmal eine Shell. Es ist Teil der Funktionsweise von Dateisystemen.

Das Dateisystem hat in jedem Verzeichnis einen Eintrag für ..und das ist das übergeordnete Verzeichnis. Jedes hat auch einen Eintrag zur .Darstellung des aktuellen Verzeichnisses.

verwandte Informationen