|
In diesem Artikel werden einige Skript dargestellt, die den Umgang mit Dateien erleichtern. Alle Beispiele beziehen sich auf XML-Dateien.
Dateien umbenennen
Folgendes Kommando benennt alle XML-Dateien in XSD-Dateien um,
$ for i in *.xml ; do mv $i `basename $i | sed 's/xml/xsd/g'`; done
oder mit folgendem Kommando
Der erste Parameter gibt die alte Dateiendung und der zweite Parameter die neue Dateiendung an. Danach folgen die zuändernden Dateien.
Kopieren mit tar und ssh
Es sollen viele kleine XML-Dateien auf einen anderen Rechner kopiert werden. Um den Kopiervorgang zu beschleunigen wird mit tar cf ein Datenstrom erzeugt. Dieser Datenstrom wird über die Standardausgabe auf den ssh-Befehl umgelenkt und auf dem entfernten Rechner wieder mit tar xf von der Standardeingabe gelesen.
$ tar cf - *.xml | ssh example.org "cd /home/user/xml ; tar xf -"
Dieser Datenstrom kann mit tar czf auch komprimiert werden.
$ tar czf - *.xml | ssh example.org "cd /home/user/xml ; tar xzf -"
Mit dem nächsten Befehl wird noch ein Buffer erzeugt, um den Datentransfer noch zu beschleunigen.
$ tar czf - *.xml | buffer -m 10m | ssh example.org "cd /home/user/xml ; tar xzf -"
Ablegen einer Backup-Datei auf einen Server...
$ tar cjvf - /home/user | ssh example.org "cat > /backup/user_20081221.tar.bz2"
..und das wieder herstellen der Daten.
$ ssh example.org "cat /backup/user_20081221.tar.bz2" | tar xjpf -
Suchen nach Dateien
Suche alle Verzeichnisse, ab den aktuellen Verzeichnis, die für alle schreibbar sind.
$ find . -type d -perm /o+w -print
Suche alle Dateien, ab den aktuellen Verzeichnis, die für alle schreibbar sind.
$ find . -type f -perm /o+w -print
Suche alle Dateien, ab den aktuellen Verzeichnis, die für alle schreibbar sind und verhindere dieses.
$ find . -type f -perm /o+w -print | xargs /bin/chmod o-w
Falls im Dateinamen ein Leerzeichen oder Zeilenumbruch enthalten ist (ist bei UNIX-Systemen zulässig), so müssen zusätzliche Parameter gesetzt werden.
$ find . -type f -perm /o+w -print0 | xargs -0 /bin/chmod o-w
Suche alle Dateien, die den letzten 2 Tagen verändert wurden.
$ find . -type f -mtime -2 -print
|