Kategorien statt Verzeichnisse. Ein Werkzeug zur bequemen Dateispeicherung

Inspiriert von einem Artikel

„Kategorien statt Verzeichnisse, oder ein semantisches Dateisystem für Linux Vitis“

beschloss ich, mein eigenes Pendant zum Tool vitis für PowerShell Core zu erstellen.

Warum ich das begonnen habe?

Erstens, vitis nur für Linux.
Zweitens, ich wollte die „Rohre“ in PowerShell nutzen.

Da ich ein plattformübergreifendes Tool erstellen wollte, entschied ich mich für .Net Core.

Vorgeschichte

Zuerst war es ein Chaos. Dann erschienen Ordner auf der Festplatte.
Aber das Chaos herrschte weiterhin. Es kamen Tags dazu, sowie Untertags und Synonyme von Tags. Aber das Chaos ergriff auch sie. Und Kategorien wurden erfunden.

Konzept

Dateien werden nicht in einer Ordnerhierarchie gespeichert, sondern in einem „Haufen“, mit bestimmten Kategorien. Eine Datei kann mehreren Kategorien angehören.

Wenn man eine Datei finden muss, ist es einfacher, die Kategorien einzugeben, zu denen sie gehört. Das ist viel einfacher zu merken, als in welchen Ordnern sie gespeichert ist.

Aber ein solches Dateisystem eignet sich keinesfalls zur Speicherung von Code, Quellcodes usw.
Es ist zum Beispiel zum Speichern von Familienfotos, Musik, Dokumenten gedacht.

Verwendung

Nun, lassen Sie uns mit der Demonstration beginnen.

Installieren wir Graphile:

# install.ps1 находится в корневой папке с кодом
PS D:SourcereposGraphile> .install.ps1

Zuerst initialisieren wir Graphile im Ordner:

# Импортируем установленный модуль
PS C:UsersDellGraphileTest> Import-Module GraphilePowerShell
# Инициализируем Graphile в папке
PS C:UsersDellGraphileTest> Init-Graphile
C:UsersDellGraphileTestgraphile.db

So, wir haben alles eingerichtet. Jetzt können wir eine neue Kategorie erstellen:

PS C:UsersDellGraphileTest> New-Category -Name "music"
music

Fügen wir Dateien hinzu:

PS C:UsersDellGraphileTest> Get-ChildItem "D:MusicPink Floyd - The Wall" -Recurse -Filter "*.mp3" | foreach { $_.FullName } | foreach {
>> Add-FileToCategory -File $_ -Categories "music"
>> }

Für diejenigen, die nicht verstanden haben, was ich gemacht habe:

  1. Ich erhielt eine Liste von Dateien im Ordner Pink Floyd - The Wall
  2. Jede Datei wurde in den vollständigen Pfad umgewandelt
  3. Ich fügte jede Datei zur Kategorie hinzu. music

Jetzt überprüfen wir, ob wir die Dateien tatsächlich zur Kategorie hinzugefügt haben:

PS C:UsersDellGraphileTest> List-Graphiles | Format-Table

Es wird eine Liste im Format ausgegeben:

Kategorien Namen Id Kategorien Name Erweiterung

Lassen Sie uns weitere Kategorien und Dateien hinzufügen:

New-Category -Name "the-wall"
New-Category -Name "alan-parsons"

List-Graphiles -Categories "music" | foreach { Add-GraphileToCategory -Categories "the-wall" -Files $_.Name }

Get-ChildItem "D:MusicThe Alan Parsons Project - Turn of a Friendly Card" -File -Recurse | foreach { $_.FullName } | foreach { Add-FileToCategory -File $_ -Categories "music", "alan-parsons" }

Lassen Sie uns die Dateien überprüfen:

List-Graphiles -Categories "alan-parsons" | Format-Table

Der Befehl wird alle Dateien auflisten, die zur Kategorie gehören alan-parsons.

Mehr Dateien für den Gott der Dateisysteme!

New-Category -Name "images"
Get-ChildItem "D:Изображения" -File -Recurse | foreach { $.FullName } | foreach {
    Add-FileToCategory -File $_ -Categories "images"
}

Überprüfen:

List-Graphiles -Categories "images" | Format-Table

Alles funktioniert!

Aber das ist erst der Anfang. Exportieren Sie Ihr gewöhnliches Dateisystem nach Graphile und erhalten Sie eine hervorragende Dateiorganisation.

Wo kann ich Graphile herunterladen

Hier Link auf GitLab von Graphile.

Lizenz MIT, sodass Sie es sogar für kommerzielle Zwecke nutzen können.

Die Zukunft des Projekts

Da dies PowerShell ist und keine Spielerei, kann eine grafische Oberfläche für .NET Core erstellt werden.

So geht's:

  1. Das Paket Microsoft.PowerShell.SDK installieren
  2. Die Klasse PowerShell verwenden und Graphile aufrufen.

Wenn Ihnen das Projekt gefällt, machen Sie Commits, Merge-Request.und erstellen Sie Diskussionen.

Vielen Dank für die Lektüre! Nutzen Sie es und genießen Sie es!

Quelle: habr.com

60GB SSD 8Gb DDR4