Wie benenne ich Dateinamen in systematischer Weise um?

May 6th, 2008 by matthias

Beispiel: gegeben seien Dateinamen wie Uebung01.2002.html, nur die Nummern der
Übungen unterscheiden sich. Der Bestandteil »2002.« soll entfernt werden. Dazu gibt man in die Kommandozeile einfach ein:

  1. for file in *; do mv "$file" "${file/2002./}"; done

Weiteres Beispiel: gegeben seien Dateinamen wie »U02e Liedtitel.txt«. Der Namensbestandteil bis (und inklusive des) ersten Leerzeichens soll entfernt werden. Dazu dient dieses Kommando:

  1. shopt -s extglob; for file in *; do mv "$file" "${file/#*([^ ]) /}"; done; shopt -u extglob;

Weiteres Beispiel: gegeben seien irgendwelche Dateinamen, man möchte sie alle mit einer Endung ».xml« versehene.
Dazu dient dieses Kommando:

  1. for file in *; do mv "$file" "$file".xml; done

Posted in Shellscripts | No Comments »

Wie kann ich pdf-Dateien verknüpfen?

May 6th, 2008 by matthias

Man verwende:

  1. pdftk file1.pdf file2.pdf cat output file.pdf

. Alternativ: Das Tool pdcat von www.pdf-tools.com.

Posted in Shellscripts | No Comments »

Wie kann ich einen Befehl für alle Verzeichnisse unterhalb des aktuellen Verzeichnisses ausführen die einer bestimmten Gruppe gehören?

May 5th, 2008 by matthias

  1. find . -group matthias-core -type d -print0 | xargs -0 chown -R matthias:matthias-core

Posted in Shellscripts | No Comments »

Wir überprüfe ich MD5-Summen in der Kommandozeile?

May 2nd, 2008 by matthias

Beispiel:

  1. echo "255dfcf3fd470ef2892a991ffb67fcfb  ooo112_osx_final.dmg.bz2" | md5sum –check

Dabei zu beachten:

  • Als Typ der Datei wird »Text« angegeben (d.h. ein zus. Leerzeichen zwischen MD5-Hashwert und Dateiname in der Eingabezeile) und nicht »Binär« (d.h. ein * an dieser Stelle). Ansonsten kann md5sum die Datei nicht öffnen.
  • Dateien werden relativ zum aktuellen Verzeichnis angegeben.

Posted in Shellscripts | No Comments »

Code Snippet um Zeilen nach 76 Zeichen umzubrechen und fortgesetzte Zeilen mit einem Leerzeichen einzurücken (so in vCard 2.1)?

May 1st, 2008 by matthias

  1. # adjust line length to 76 chars max
  2. # as globally replacing regexps are not applied to their own previous replacements and
  3. # not to the 2nd+ lines if these were created by newlines in replacement, we need to
  4. # break lines iteratively until there are no more ones to break:
  5. echo -n; # trim exit status in $? to "0" with a no-op
  6. while (( $? == 0 )); do
  7. echo "debug: ed script: adjusting line length";
  8. ed $silentOpt $tmpaddrbook << EDINEND
  9. H
  10. ,s/\(.\{76\}\)\(.\+\)/\1\\
  11.  \2/
  12. wq
  13. EDINEND
  14. done

Posted in Shellscripts | No Comments »

Code Snippet um das 13. und alle weiteren vcf-Felder aus einer vcf-Datei zu entfernen?

May 1st, 2008 by matthias

  1. # delete 13th+ vcf entries (and accidentally 15th+ lines between vCards, but that doesn‘t hurt)
  2. vcfEntryCount=0;
  3. addrbook_max12="$(basename $tmpaddrbook .vcf).max12entries.vcf";
  4. while read line; do # traverse $tmpaddrbook, read from while’s redirected stdin
  5.   if echo $line | grep -q "^BEGIN:VCARD" || echo $line | grep -q "^END:VCARD"
  6.   then
  7.     vcfEntryCount=0; # also to not remove up to 12 blank lines between vCards
  8.     echo $line >> $addrbook_max12;
  9.   else
  10.     (( vcfEntryCount += 1 ));
  11.     if (( vcfEntryCount <= 12 ))
  12.     then
  13.       echo $line >> $addrbook_max12;
  14.     else
  15.       echo "WARNING: if you want to protect loss of data, adjust this vCard manually to 12-14 entries";
  16.     fi
  17.   fi
  18. done < "$tmpaddrbook"
  19. mv $addrbook_max12 $tmpaddrbook;

Posted in Shellscripts | No Comments »

Wie kann ich einen ed-Befehl zum Zusammenführen von Zeilen (z.B. in VCF-Dateien) schreiben?

May 1st, 2008 by matthias

  1. # join all consecuting lines with the preceding, removing a leading space
  2. echo -e "H\n g/^ / s/^ //\\\n -,. j\n wq" | ed -s $tmpaddrbook;

Posted in Shellscripts | No Comments »

Wie kann ich verkleinerte Versionen der Bilder in einem ganzen Ordner erzeugen?

May 1st, 2008 by matthias

  1. rm eBay.Artikel.Bilder.web/*;
  2. for file in eBay.Artikel.Bilder.original/*.jpg; do convert -size 1024×768 -scale 1024×768  -quality 75 $file ${file/eBay.Artikel.Bilder.original/eBay.Artikel.Bilder.web};
  3. done;
  4. for file in eBay.Artikel.Bilder.web/*.jpg; do mv $file ${file/.jpg/.web.jpg}; done;

Posted in Graphikbearbeitung, Shellscripts | No Comments »

Wie kann ich ein JAR-Archiv unter Linux entpacken und packen?

April 30th, 2008 by matthias

Mit dem Kommando »jar«. Aber die Dokumentation ist hier ungenügend. Die JAR-Datei kann nicht einfach so angegeben werden sondern muss hinter der Option »-f« angegeben werden. Also um den Inhalt eines JAR-Archivs zu listen:

  1. jar -tf file.jar

Posted in Shellscripts | No Comments »

Wie kann man aus einem Facsimile-Buch wieder eine Serie von Bildern machen, ohne Qualitätsverluste?

April 30th, 2008 by matthias

Es ist völlig in Ordnung nach Umwandlung in ein PDF-Facsimile die Bilddateien zu löschen aus denen man die PDF-Datei generiert hat. Denn man kann mit pdfimages und convert wieder die Bilddateien in identischer Form extrahieren wenn notwendig. Das gilt nicht nur für verlustfrei komprimierte Bilder sondern auch für in PDF-Dateien enthaltene JPG-Bilder (Abweichungen waren dabei optisch nicht festzustellen und die Dateigröße war fast identisch zu der des Original-JPG-Bildes). Auch wenn das mit pdfimages generierte PDF einen höheren Qualitätswert hat sind Abweichungen nicht feststellbar, jedoch ergibt sich eine unnötig größere Datei. Also sollte man wissen welche Qualität die in der PDF-Datei enthaltenen JPG-Bilder haben. Beispiel:

  1. pdfimages buch.pdf buch;
  2. convert -quality 45 buch-000.ppm buch-000.jpg;

Dabei sollte man noch beachten dass man die Art der Bilder in der PDF-Datei im Dateinamen vermerken sollte um nachher zu wissen wie man die Bilder speichern sollte um kleinste Dateigröße zu erreichen und Qualitätsverluste zu vermeiden. Beispiele:

  1. file1.300dpi.png.1bpp.pdf
  2. file2.200dpi.jpg.80perc.pdf

Posted in Shellscripts | No Comments »