Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

Input-Ordner erneut einlesen

Alles rund um die verschiedenen Konsolen und shells sowie die Programmierung unter Linux

Moderator: Moderatoren

Antworten
bunter fisch
Member
Member
Beiträge: 71
Registriert: 12. Sep 2017, 10:25

Input-Ordner erneut einlesen

Beitrag von bunter fisch » 17. Aug 2018, 18:42

Hallo,

ich habe mir ein Kontextmenü erstellt um Bilddateien direkt in CBZ (Comic Book-Format) zu packen. Ich musste die vorher aber immer noch passend umbenennen, da manche Viewer unter Android Probleme haben, wenn die Dateinamen Leerzeichen haben oder bestimmte andere Zeichen (Umlaute z. B.) oder die Dateien nicht gleich lange Datennamen haben. Hab das Skript jetzt erweitert um eine Schleife zum umbenennen:

Code: Alles auswählen

a=1
for i ; do
  new=$(printf "%04d.jpg" "$a") #04 pad to length of 4
  mv -i -- "$i" "$new"
  let a=a+1
done
Stamm aus dem Netz, ist nicht von mir. Darunter soll nun die Erstellung der CBZ kommen. Das sieht dann so aus:

Code: Alles auswählen

ordner=$(pwd "$@")
ordner1=${ordner##*/}								
if [ -f "$ordner1".cbz ]
 then
  yad --text 'Datei existiert bereits. Überschreiben?' --button-gtk-no:1 --button-gtk-yes:0
  foo=$?												
  [[ $foo -eq 1 ]] && exit 0								
  [[ $foo -eq 0 ]] && zip -j "$ordner1".cbz "$@" && exit 0
 else
  zip -j "$ordner1".cbz "$@"	
fi
Die CBZ-Datei erhält automatisch den Namen des übergeordneten Ordners. Problem ist nun, dass beim Starten des Scriptes ja die alten Dateinamen eingelesen werden, die aber im ersten Teil des Skriptes geändert werden und nun für den zweiten Teil nicht mehr passen. Wie kann ich das hinbiegen, dass er die geänderten Dateinamen verwendet? Mir fällt spontan nur ein daraus zwei Scripte zu machen und das zweite mit dem CBZ-Teil zu starten und den Ordner nochmal (nun mit den geänderten Dateinamen) einlesen zu lassen.

bunter fisch

Werbung:
Benutzeravatar
framp
Moderator
Moderator
Beiträge: 4265
Registriert: 6. Jun 2004, 20:57
Wohnort: bei Stuttgart
Kontaktdaten:

Re: Input-Ordner erneut einlesen

Beitrag von framp » 17. Aug 2018, 19:48

Nachdem Du alle Dateien umbenamst hast sollte folgende Schleife tun was Du suchst:

Code: Alles auswählen

for file in *.jpg; do
        echo "Processing $file" 
done

bunter fisch
Member
Member
Beiträge: 71
Registriert: 12. Sep 2017, 10:25

Re: Input-Ordner erneut einlesen

Beitrag von bunter fisch » 17. Aug 2018, 19:56

Er soll ja die Dateien packen die ich vorher per Maus markiert hab. Das Script startet per Kontext Menü im File Manager. Hätte ich erwähnen sollen. Es kann also Dateien, auch mit gleichem Format, die nicht gepackt werden sollen.

Oder alternativ erst danach im Archiv umbenennen, wenn das möglich ist?

bunter fisch
Member
Member
Beiträge: 71
Registriert: 12. Sep 2017, 10:25

Re: Input-Ordner erneut einlesen

Beitrag von bunter fisch » 17. Aug 2018, 22:31

Ich hab eine andere Idee. Man könnte das Ergebnis der For-Schleife in eine Liste ausgeben lassen und diese Liste - dann also die neuen Dateinamen - als Dateiliste an zip verfüttern.

Ich bekomme nur leider nicht heraus wie ich die For-Schleife als Variable speichere.

Benutzeravatar
framp
Moderator
Moderator
Beiträge: 4265
Registriert: 6. Jun 2004, 20:57
Wohnort: bei Stuttgart
Kontaktdaten:

Re: Input-Ordner erneut einlesen

Beitrag von framp » 17. Aug 2018, 23:18

Dann sollte es

Code: Alles auswählen

ls *.jpg | zip -j archive.zip -@
tun

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast