Ich bin in einer merkwürdigen Situation gelandet. Ich habe 35 Ordner. Der erste heißt 1, der zweite 2 und so weiter. In jedem dieser Ordner befinden sich 4 Dateien. „1.png“, „2.png“, „3.png“, „4.png“. In jedem dieser Ordner möchte ich „convert *.png -append out.pdf“ ausführen und jede „out.pdf“ nach ihrem ursprünglichen Verzeichnis umbenennen (z. B. „out1.pdf“ aus dem ersten Ordner) und dann jede PDF-Datei aus ihrem ursprünglichen Ordner entpacken. Ist das möglich? Ich habe es mit Schleifen versucht, aber alles, was ich versucht habe, scheint mit dem Benennungssystem nicht übereinzustimmen.
Antwort1
Versuchen Sie etwas wie Folgendes:
#!/bin/sh
for dir in $(seq 1 35)
do
(
cd $dir || exit 1
rm -f out$dir.pdf
for n in 1 2 3 4
do
convert $n.png -append out$dir.pdf || exit 2
done
)
done
Dieses Skript ist POSIX-kompatibel und erfordert kein bash
, daher das #!/bin/sh
.
Der Code zwischen den Klammern wird in einer Subshell ausgeführt, sodass der cd
Befehl das Verzeichnis nur bis zur schließenden Klammer ändert. Die nächste Iteration der Schleife beginnt im ursprünglichen Arbeitsverzeichnis.
Ich denke, in Ihrem Beispiel convert
ist die Syntax für falsch. Convert nimmt nur eine Eingabedatei an, und in Ihrer ursprünglichen Frage *.png
würde das vier Eingabedateien übergeben. Vielleicht ist das ein Teil Ihres Problems.