Swiss File Knife Highlights

SFK ist ein freies Open Source tool für die Kommandozeile von jedem Computer, mit mehr als 100 Funktionen. Dies sind die wichtigsten.

Zip Dateien erzeugen, einfach und flexibel.

Eine Zip Datei erzeugen mit allen Dateien eines Ordners.
Eine Zip Datei erzeugen mit ausgewählten Dateien eines Ordners.
Ein Zip erzeugen von allem was heute geändert wurde.
Ein 20 GByte großes Zip erzeugen von allen Filmen in einem Ordner.
Nur bestimmte Dateien aus einer Zip Datei auspacken.

Dateien zu einem anderem Computer senden, sofort.

Alle Dateien eines Ordners zu einem anderen Computer senden.
Ausgewählte Dateien eines Ordners senden.
Nur Dateien senden die heute geändert wurden.
Einen Webserver starten um Dateien hochzuladen.

Dateien von einem Ordner zu einem anderen kopieren.

Alle Dateien eines Ordners kopieren, außer ...
Dateien eines Ordners kopieren, aber nur ...
Nur Dateien kopieren die in den letzten 3 Tagen geändert wurden.

Dateinamen auf dem Computer finden, sofort.

Einen Dateinamens-Index schnell erzeugen.
Dateinamen sofort über den Index finden.

Text in Office Dateien finden, schnell und flexibel.

Text in Office Dateien suchen auf der Kommandozeile.

Abläufe einfach automatisieren mit Batchfiles.

Ein Skript erzeugen für das tägliche Backup.
Ein Skript erzeugen für das wöchentliche Backup.

Open Source, keine Installation, sofort verwenden.

SFK Dateien herunterladen.
 

Eine Zip Datei erzeugen mit allen Dateien eines Ordners.

Erzeugen Sie eine Zip Datei mit allen Dateien von Ordner mydir mittels:

   sfk zip mydir

Eine Zip Datei erzeugen mit ausgewählten Dateien eines Ordners.

Liste Dateien in Order mydir, aber nur solche die mit .png oder .jpeg enden, und in bestimmten Unterordnern liegen, mit media im Namen:

   sfk list -dir mydir 
      -subdir media -file .png .jpeg
(Tippen Sie das alles in einer Zeile.)

Dies erzeugt eine Liste der gewählten Dateien. Wenn diese vollständig aussieht, fügen Sie +zipto hinzu:

   sfk list -dir mydir
      -subdir media -file .png .jpeg
      +zipto images
Das erzeugt eine Voransicht was in das Zip gepackt würde. Fügen Sie -yes hinzu um die Zip Datei wirklich zu erzeugen.

Ein Zip erzeugen von allem was heute geändert wurde.

Listen Sie zuerst nur die Dateien im Ordner mydir auf welche sich heute geändert haben:

   sfk today mydir

Es kommt eine Liste von Dateien. Vielleicht wollten Sie davon einige gar nicht im Zip haben, z.b. .bak or .tmp, oder alles mit test im Namen. Dann schließen Sie solche Dateien aus per:

   sfk today mydir !.bak !.tmp !test
Zippen Sie diese schließlich in eine Datei mittels:
   sfk today mydir !.bak !.tmp !test
      +zipto today.zip
Unter Mac/Linux sieht das Kommando etwas anders aus:
   sfk today mydir :.bak :.tmp :test
      +zipto today.zip

Ein 20 GByte großes Zip erzeugen von allen Filmen in einem Ordner.

SFK kann 64-bit Zip Dateien erzeugen, d.h. die Inhalte können größer sein als 2 GByte. Zum Beispiel,

   sfk zip movies.zip media .mov
packt alle .move files aus Ordner media in eine Datei movies.zip, ohne daß Sie sich über Gigabyte-Grenzen Sorgen machen müssen.

Beachten Sie aber daß einige (ältere) Software vielleicht nicht in der Lage ist 64-bit Zip Datei Inhalte zu lesen.

Nur bestimmte Dateien aus einer Zip Datei auspacken.

Lassen Sie alle Inhalte eines Zips anzeigen per

   sfk unzip myfile.zip
Solange Sie kein -yes anhängen bekommen Sie nur die Liste der Dateien welche ausgepackt würden, geschrieben wird aber noch nichts. Wenn Sie nur Dateien wollen welche das Muster foo im Namen haben, tippen Sie
   sfk unzip myfile.zip -pat foo
was beispielsweise auswählt:
   project/media/foo1.png
   project/media/barfoo9.png
   project/foostufff/test1.png
Wenn Sie nur Dateien und Unterordner auspacken wollen die mit foo beginnen, tippen Sie:
   sfk unzip myfile.zip -pat /foo
Wenn Sie nur Dateien aus einem Ordner media haben wollen, oder welche exakt media heißen, tippen Sie:
   sfk unzip myfile.zip -pat /media/

Alle Dateien eines Ordners zu einem anderen Computer senden.

Sie haben einen Ziel-PC, Macintosh oder Linux Computer zu welchen Sie Dateien übertragen wollen. Dann starten Sie auf diesem Zielcomputer:

   sfk sftserv -rw
Instant-Dateiserver, welcher sofortigen Lese- und Schreibzugriff auf den aktuellen Ordner ermöglicht, sowie auf alle Unterordner. SFK gibt aus:
   SFK Instant FTP 105.
   waiting on port 2121,
   IP 192.168.1.100
Merken Sie sich die IP-Adresse des Zielrechners, in diesem Fall 192.168.1.100.

Sie haben einen Quell-PC, Macintosh odr Linux Rechner von welchem Sie Dateien zum Zielrechner übertragen wollen. Tippen Sie auf dem Quellrechner:

   sfk dir mydir +put 192.168.1.100
Dies sendet alle Dateien des Ordners mydir, inklusive aller Unterordner, zum Zielrechner. Sie bekommen aber erstmal nur eine Voransicht was gesendet würde. Hängen Sie -yes an um wirklich zu senden.

Das +put sendet nur Dateien welche noch nicht im Ziel existieren, oder welche neuer sind. Sie können auch +putall verwenden um das senden aller Dateien zu erzwingen, ungeachtet des Änderungsdatums.

Ausgewählte Dateien eines Ordners senden.

Sie wollen nur Dateien übertragen vom Typ .png oder .jpeg, welche sich in bestimmten Unterordnern mit media im Namen befinden. Listen Sie zuerst die Dateien auf:

   sfk list -dir mydir
      -subdir media -file .png .jpeg
(Tippen Sie alles in eine Zeile.)

Dies erzeugt eine Dateiliste. Wenn sie vollständig aussieht fügen Sie+put hinzu:

   sfk list -dir mydir
      -subdir media -file .png .jpeg
      +put 192.168.1.100

Nur Dateien senden die heute geändert wurden..

Listen Sie zuerst die Dateien im Ordner mydir auf welche heute geändert wurden:

   sfk today mydir

Sie erhalten eine Liste von Dateinamen. Vielleicht wollen Sie daß einige davon nicht gesendet werden, wie solche mit Endung .bak oder .tmp, oder alles mit test im Namen. Dann schließen Sie diese aus per:

   sfk today mydir !.bak !.tmp !test
Senden Sie diese schließlich zum Rechner 192.168.1.100 mittels:
   sfk today mydir !.bak !.tmp !test
      +put 192.168.1.100
Unter Mac/Linux sieht das Kommando ein wenig anders aus:
   sfk today mydir :.bak :.tmp :test
      +put 192.168.1.100

Einen Webserver starten um Dateien hochzuladen.

Sie haben ein Foto mit dem Handy gemacht. Das soll nun auf den PC, ohne ein Kabel zu verwenden. Gehen Sie auf dem PC per CD in den Zielordner, und tippen Sie:

   sfk webserv -rw
Dies stellt Lese- und Schreibzugriff auf den aktuellen Ordner bereit, inklusive aller Unterordner. Es kommt eine Ausgabe wie:
   SFK Instant HTTP Server.
   Waiting on port 80.
   Try http://192.168.1.100
Öffnen Sie nun einen Web Browser auf Ihrem Handy, und Tipppen Sie die gezeigte Adresse, in diesem Beispiel 192.168.1.100. Sie erhalten eine einfache Webseite mit der Möglichkeit eine Datei auszuwählen und hochzuladen.

Dateien eines Ordners kopieren, unter Ausschluß bestimmter Unterordner und Dateinamen.

Sie wollen Ordner project kopieren nach project2. Fangen Sie an mit:

   sfk copy project project2
Das kopiert noch gar nichts, es zeigt nur die ausgewählten Dateien:
   project\readme.txt
   project\logo.png
   project\turnover.xlsx
   project\turnover.xlsx.bak
   project\oldstuff\turnover.xlsx
   project\logging\dbdump.dat
Sie wollen aber eine saubere Projekt-Kopie ohne Mülldateien. Sie wollen also keine .bak files kopieren, keine Unterordner oldstuff, keine Unterordner logging. Erweitern Sie daher das Kommando so:
   sfk copy project project2
      -dir . -subdir !old !log
      -file !.bak
Tippen Sie das alles in eine Zeile. Dies wird ausschließen: Das Kommando ist nicht sehr präzise, es würde auch Unterordner ausschließen wie "folding" und "logos". In den meisten Fällen ist so eine schnell getippte Form ausreichend, aber wenn Sie es präzise wollen, tippen Sie
   sfk copy project project2
      -dir . -subdir !\old\ !\log\
      -file !.bak
Sobald Sie mit der Voransicht zufrieden sind, fügen Sie -yes hinzu.
Unter Mac/Linux sieht das Kommando etwas anders aus:
   sfk copy project project2
      -dir . -subdir :/old/ :/log/
      -file :.bak

Nur ausgewählte Dateien eines Ordners kopieren.

Sie wollen Teile des Ordners work nach docs kopieren. Fangen Sie an mit:
   sfk copy work docs
Das kopiert noch nichts, es zeigt nur die ausgewählten Dateien:
   work\foo.cpp
   work\bar.cpp
   work\system.hpp
   work\readme.txt
   work\docs\intro.docx
   work\docs\dataflow.png
Sie wollen nur Dateien kopieren wie readme, .docx, dataflow. Dann verwenden Sie
   sfk copy work docs
      -dir .
      -file readme .docx dataflow
Tippen Sie das alles in eine Zeile. Die Ausgabe könnte so aussehen:
   [simulating:]
   work\docs\dataflow.png
   work\docs\intro.docx
   work\readme.txt
   [add -yes to execute.]
   would copy 3 files, 2 mbytes.
Hängen Sie schließlich -yes an um wirklich zu kopieren.

Nur Dateien kopieren die in den letzten 3 Tagen geändert wurden.

Ordner work enthält 150,000 Dateien, und Kommando

   sfk copy work work2
braucht vielleicht eine halbe Minute, selbst wenn es nichts zu kopieren gibt. Denn SFK muß sich jede Datei anschauen, nur um herauszufinden welche sich geändert haben. Wenn Sie schon wissen daß work2 eine komplette Kopie von work ist, und Sie nur die Änderungen der letzten drei Tage kopieren wollen, vewenden Sie stattdessen:
   sfk copy work work2 -since 3d

Einen Dateinamens-Index schnell erzeugen.

Gehen Sie in der Kommandozeile nach C:\, und tippen Sie:

   sfk index .
Vergessen Sie nicht den Punkt ".", denn das steht für das aktuelle Verzeichnis, inklusive aller Unterverzeichnisse. Dies erzeugt eine Index-Datei zz-index\zz-index.txt mit allen Dateinamen auf Laufwerk C:\. Das dauert ein paar Minuten.

Unter Mac/Linux, gehen Sie in den Root Ordner mittels cd /, führen Sie dann das Kommando als Admin aus mittels

   sudo sfk index .
welches eine Datei zz-index.txt direkt im Root Ordner erzeugt.

Wenn Sie das nicht als root User machen wollen, verwenden Sie gindex. Egal in welchem Ordner Sie sich gerade befinden, tippen Sie einfach:

   sfk gindex /
und es wird eine sog. globale Indexdatei erzeugen, wie
   /home/yourusername/
      .sfkhome/data/zz-index.txt
welche alle Namen von "/" inklusive Unterordner enthält. Das sfk name Kommando wird auch diese globale Indexdatei automatisch mit durchsuchen.

Dateinamen sofort über den Index finden.

Sie wissen es gibt eine Datei die irgendwie "island" und ".jpg" im Namen hat. Aber Sie wissen nicht wo. Dann tippen Sie:

   sfk name island .jpg
SFK lädt die oben erzeugte Index-Datei, holt alle Dateinamen heraus welche die gegebenen Worte im Pfad oder Dateinamen enthalten, und listet die Ergebnisse, sortiert nach Änderungsdatum.
using: C:\zz-index\zz-index.txt
C:\doc\screens\03-carib-island.jpg
C:\doc\screens\05-island-pathway.jpg
C:\webdir\desks\1280-green-island.jpg
C:\webdir\desks\1600-green-island.jpg
Dateinamen auf diese Art zu suchen ist viel schneller als mit jeder Funktion die Ihr Betriebssystem bereitstellt. Und Sie haben volle Kontroller über die Indizierung, also wann diese genau stattfindet. Wenn Sie wissen daß die letzte Indexierung vor 7 Tagen war können Sie sicher sein daß alle Dateien 8 Tage oder älter sind darin zu finden sind.

Text in Office Dateien suchen auf der Kommandozeile.

Es gibt einen Ordner C:\sales mit ein paar tausend .docx Dateien. Sie wollen alle Rechnungen suchen mit dem Wort PC und Modellnummer 12345 in derselben Zeile. Dann tippen Sie:
   C:
   cd \
   sfk ofind sales "/pc*12345/"
Beispielausgabe:
:file sales\2017022291-George Smith.docx
Gamer PC    GC-12345   EUR 795.90
:file sales\2018072443-Wilma Doe.docx
Gamer PC    GC-12345   EUR 795.90
:file sales\2011061442-James Sample.docx
Gamer PC    GC-12345   EUR 795.90
Der Suche ist Klein/Großschreibung egal. Die Slashes "/" um das Suchmuster herum sind nötig weil das Suchmuster sehr flexibel sein kann; es erlaubt optional eine Umformatierung der Ausgabe. Tippen Sie sfk ofind für die volle Syntax.

Ein Skript erstellen für das tägliche Backup.

Sie arbeiten im Büro, und

Gehen Sie nach D:\, und beginnen Sie mit:
   sfk batch backup.bat
Dies erzeugt eine kurze Batch File Vorlage. Öffnen Sie diese in Notepad, und reduzieren Sie sie auf ein Minimum, wie hier:
   @echo off
   sfk script "%~f0" -from begin %*
   GOTO xend
   
   sfk label begin -var
   
      +sync work o:\work
    
         -dir .
   
            -subdir !\tracing !\dbdump

            -file   !\tmp !.bak
   
            %1
   
      +end
   
   :xend
Erläuterungen: Tippen Sie nun backup. Es zeigt erstmal nur eine Voransicht was kopiert würde, und was möglicherweise im Ziel gelöscht wird. Tippen Sie schließlich backup -yes um wirklich die Dateien zu synchronisieren.

Diese Batchdatei ist ein Automatisierungsskript. Der große Vorteil gegenüber direkt getippten Kommandos ist daß Sie alles über mehrere Zeilen verteilen können, in einem Text Editor, wodurch alles gut lesbar und leicht erweiterbar wird.

Unter Mac/Linux ist es wieder etwas anders:

Erstellen Sie ein Skript für Ihr wöchentliches Backup Zuhaus.

Zu Hause haben Sie normalerweise

und natürlich wollen sie nicht den kompletten Laufwerksinhalt sichern, weil z.B. kopieren von C:\Windows sinnlos ist (man kann es nie zurück kopieren ohne das Betriebssystem zu beschädigen), und es würde Ewigkeiten dauern, bei jedem Backup-Durchlauf.

Es muß also eine Auswahl geben der zu sichernden Hauptordner, und vielleicht auch einen Ausschluß von bestimmten Unterordnern und unerwünschten Dateien.

Sie können nicht einfach nach C:\ gehen und dort eine Batchdatei erzeugen, weil Windows das aus Sicherheitsgründen blockiert. Daher ist ein Ordner wie C:\tools empfehlenswert. Gehen Sie dort per CD hinein, und fangen Sie an mit:

   sfk batch backup.bat -full
Das -full ist wichtig. Es erzeugt die große Backup-Batch Vorlage, welche Sie sich hier durchlesen können.

Prüfen Sie genau die Standard-Filter welche unter -subdir und -file definiert werden. Löschen Sie diese erstmal komplett, um sicherzugehen daß alle Dateien der Hauptordner gesichert werden. Definieren Sie dann erst eigene Filter, Schritt für Schritt.

Eine volle Erklärung von jedem Schritt im Script gibt es im Englischen SFK E-Book, im Kapitel Backup and transfer of folders.

Für Mac/Linux ist ein ähnliches Script verfügbar per

   sfk batch backup.sh -full
welches natürlich kein C: und D: Laufwerk benutzt sondern nur einen Hauptordner.


SFK Dateien zum Herunterladen:

Sie finden diese auf SourceForge, oder direkt hier:

SFK für Windows (32/64 bits)
SFK für Windows (64 bits OSE)
SFK für Mac OS/X (64 bits)
SFK für Desktop Linux (64 bits)
SFK für Embedded Linux (32 bits)
Zip GesamtpaketMit Source Code zum Selbercompilieren.

Wenn Sie schon Erfahrung mit der Kommandozeile haben: speichern Sie sfk.exe in einen Ordner der im PATH enthalten ist, und Sie haben sofort das sfk Kommando verfügbar.

Wenn Sie noch keine Kommandozeilen-Erfahrung haben: doppelklicken Sie auf sfk.exe nach dem Herunterladen. Ein Fenster mit Informationen öffnet sich. Drücken Sie '1'. Dies wird

Das erfordert keine Administratorrechte. Doppelklicken Sie auf das erzeugte sfk shell Symbol. Dies wird eine Kommandozeile öffnen in welcher Sie das sfk Kommando benutzen können.

Auf Mac/Linux sollten Sie die Datei nach dem Herunterladen auf sfk umbenennen.
Tippen Sie dann chmod +x sfk um diese ausführbar zu machen. Erweitern Sie den PATH um den Ordner in welchem sfk enthalten ist. Tippen Sie dann ./sfk für den Haupt-Hilfetext.


Finden Sie alle einhundert SFK Funktionen auf der Swiss File Knife Homepage: