Categorieën in plaats van mappen. Een tool voor het eenvoudig opslaan van bestanden

Geïnspireerd door artikel

«Categorieën in plaats van mappen, of een semantisch bestandssysteem voor Linux Vitis»,

besloot ik een soortgelijke tool te maken vitis voor PowerShell Core.

Waarom ben ik hiermee begonnen

Ten eerste, vitis alleen voor Linux.
Ten tweede, ik wil gebruikmaken van 'pipes' in PowerShell.

Omdat ik een cross-platform-tool wilde maken, koos ik voor .Net Core.

Achtergrond

In het begin was er chaos. Daarna verschenen er mappen op de schijf.
Maar de chaos heerste nog steeds. En er kwamen tags, evenals sub-tags en synoniemen voor tags. Maar de chaos veroverde ook die. En er werden categorieën bedacht.

Concept

Bestanden worden niet in een hiërarchie van mappen opgeslagen, maar in een 'hoop', met bepaalde categorieën. Eén bestand kan tot meerdere categorieën behoren.

Als je een bestand wilt vinden, is het handiger om de categorieën in te voeren waartoe het behoort. Dit is veel gemakkelijker te onthouden dan in welke mappen het is opgeslagen.

Maar zo'n bestandssysteem is absoluut niet geschikt voor het opslaan van code, bronnen, enz.
Het is bedoeld voor het opslaan van bijvoorbeeld familiefoto's, muziek, documenten.

Gebruik van

Nou, laten we beginnen met de demonstratie.

Laten we Graphile installeren:

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

Laten we eerst Graphile initialiseren in de map:

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

Dus, we hebben alles ingesteld. Nu kunnen we een nieuwe categorie aanmaken:

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

Laten we bestanden toevoegen:

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

Voor degenen die niet begrepen wat ik deed:

  1. Ik verkreeg een lijst van bestanden in de map Pink Floyd - The Wall
  2. Elk bestand is omgevormd naar het volledige pad
  3. Ik heb elk bestand aan de categorie toegevoegd music

Laten we nu controleren of we de bestanden inderdaad aan de categorie hebben toegevoegd:

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

Er zal een lijst worden weergegeven in het formaat:

CategoriesNames Id Categories Name Extension

Laten we meer categorieën en bestanden toevoegen:

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" }

Laten we de bestanden controleren:

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

De opdracht geeft alle bestanden weer die tot de categorie behoren alan-parsons.

Meer bestanden voor de god van bestandssystemen!

New-Category -Name "images"
Get-ChildItem "D:Afbeeldingen" -File -Recurse | foreach { $.FullName } | foreach {
    Add-FileToCategory -File $_ -Categories "images"
}

We controleren:

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

Alles werkt!

Maar dit is pas het begin. Exporteer jouw gewone bestandssysteem naar Graphile en krijg een uitstekende organisatie van bestanden.

Waar te downloaden Graphile

Hier is link op GitLab van Graphile.

Licentie MIT, dus je kunt het zelfs voor commerciële doeleinden gebruiken.

De toekomst van het project

Aangezien dit PowerShell is en geen onzin, kun je een grafische interface maken voor .NET Core.

Hoe te doen:

  1. Installeer het pakket Microsoft.PowerShell.SDK
  2. Gebruik de PowerShell-klasse en roep Graphile aan.

Als je het project leuk vindt, maak dan commits, merge requesten start discussies.

Bedankt voor het lezen! Maak er gebruik van en geniet ervan!

Bron: habr.com

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster