![Probleme mit dem Befehl „Konvertieren“, wenn im Ziel Unterverzeichnisse fehlen](https://rvso.com/image/747352/Probleme%20mit%20dem%20Befehl%20%E2%80%9EKonvertieren%E2%80%9C%2C%20wenn%20im%20Ziel%20Unterverzeichnisse%20fehlen.png)
Ich habe ein Verzeichnis namens „ src
full“ mit Unterverzeichnissen und anderen Bildern. Ich habe versucht, sie alle mithilfe einer Bash-Anweisung automatisch in ein anderes Zielverzeichnis mit thumb
folgendem Namen zu verschieben:
find ./src -type f -follow -iname '*.jp*g' -exec convert -resize 150x150x "{}" "./thumb/${size}/{}" \;
Dies hat nicht funktioniert, da das thumb
Verzeichnis zunächst leer ist und nicht die gleiche Verzeichnisstruktur wie aufweist src
.
Ich habe versucht, das nachzuschlagen, man convert
kann aber die Option zum automatischen Erstellen der Verzeichnisse nicht finden convert
. Wie kann ich alle meine Bilder im Verzeichnis effektiv in eine Miniaturbildgröße konvertieren thumb
? Muss ich alle Unterverzeichnisse in Miniaturbild vorab erstellen?
BEARBEITEN
Dem obigen Befehl habe ich Folgendes vorangestellt:
find ./src -type d -follow -exec mkdir -p "thumb/${size}/{}" \;
Aber ich frage mich, ob ich alles mit einem Befehl statt mit zweien erledigen könnte?
Antwort1
Die UNIX-Philosophie besteht darin, Befehle zu haben, die nur eine Sache tun. Befehle, die in eine Datei schreiben können, anstattstdoutdehnen diese Regel bereits aus.
Ob Sie alles mit einem Befehl erledigen können, hängt von Ihrer Definition ab. Dies funktioniert:
find ./src -type f -follow -iname '*.jp*g' -exec /bin/sh -c \
'mkdir -p `dirname "thumb/'${size}'/{}"` &&'\
'convert -resize 150x150x "{}" "./thumb/'${size}'/{}' \;
als ein Befehl oder mehrere zählen: find
, sh
, mkdir
, dirname
, convert
? Die Zeilenumbrüche dienen nur zur„Lesbarkeit“.