Dateien in einem Verzeichnis mit neuer Endung versehen

Shell Scripte sind schon etwas tolles! Allerdings können Sie auch zum Fluch werden, gerade wenn sich ein Tippfehler einschleicht. In meinem Fall hab ich somit mehrere Hundert Dateien mit einer falschen Endung versehen.
(Ich habe *.tgu anstelle von *.tgz geschrieben).
Da mein Script generell funktioniert hat und es zudem mehrere Stunden lief, brauchte ich nun eine Lösung um schnell alle Dateien in einem Verzeichnis mit der korrekten Dateiendung zu versehen.

Und so hats funktioniert:

for i in *.tgu; do mv $i ${i%.*}.tgz; done

Die Schleife sucht also in einem Verzeichnis alle *.tgu Dateien und benennt diese um.

Dateien in einem Verzeichnis einzeln Packen

Alle Dateien in ein Verzeichnis zu packen ist gar nicht schwer. (siehe hier) Aber was wenn jetzt jede Datei ein Archiv werden soll? So gehts:

for i in *; do tar -cvzf $i.tgz $i; done

Mit folgendem Befehl werden die Quelldateien gleich nach dem Packen gelöscht.

for i in *; do tar -cvzf $i.tgz $i; rm $i; done

Selbstverständlich kann man die zu packenden Dateien auch Filtern, indem das * mit z.B. *.log ersetzt wird.

Datei splitten und wieder zusammensetzen

Da ich nicht jedesmal Google als Gedankenstütze verwenden will, hier der Befehl zum Zerlegen einer Datei. Dabei wird die datei.tgz in handliche 500mb Stücke zerlegt.

split -b 500m datei.tgz datei_split.

Zusammengesetzt bekommt man diese wieder mit:

cat datei_split.* > datei.tgz

Das Zusammensetzen geht auch unter Windows:

copy /b datei_split.aa+datei_split.ab+… datei.tgz

Weitere Informationen gibts hier:
http://wiki.ubuntuusers.de/split#Optionen
http://wiki.ubuntuusers.de/cat#Optionen

Einbinden einer Freigabe mittels cifs

Heute hatte ich das Problem, das ich per Shell nicht sauber auf eine Freigabe zugreifen konnte. (Client: Ubuntu 9.10 Desktop, Filer: FreeNAS 0.7) Hierfür gibt es natürlich viele Wege und Möglichkeiten. Ich habe mich für die Variante des einbinden der Freigabe ins lokale Dateisystem entschieden. Hierfür war nur die Installation des Pakets smbfs nötig. (Sofern nicht vorhanden!)

sudo apt-get install smbfs

Als nächstes brauchte ich einen Mountpoint und habe mich für /media entschieden. Denn anders als bei /mnt wird automatisch auch eine Desktopverknüpfung erzeugt.

sudo mkdir /media/filer

Da ich die Verbindung nur temporär benötige, genügt mir der mount Befehl. Sollte ein Passwort vergeben sein, wird dies abgefragt.

sudo mount -t cifs -o username=sven //10.10.50.50/freigabe /media/filer

Das ganze kann bei Bedarf natürlich auch in die /etc/fstab oder in ein kleines Shell-Script gespeichert werden, so dass man diese Funktion jederzeit wieder bzw. dauerhaft nutzen kann.

Nun konnte ich simpel via Shell auf die Verzeichnisse zugreifen.

cd /media/filer/…

Weitere Infos gibts hier:
http://wiki.ubuntuusers.de/Samba_Client_cifs
http://freenas.org/documentation:setup_and_user_guide:cifs