Fájlok és mappák listázása

Már használtuk a Get-Item  és Get-ChildItem  cmdleteket, de nézzük meg részletesebben is használatukat!

PS C:\> Get-ChildItem C:\PSKönyv

 

 

    Directory: C:\PSKönyv

 

 

Mode                LastWriteTime     Length Name

----                -------------     ------ ----

d----       2014.06.30.     20:49            Normál mappa

-----       2014.06.30.     20:50          0 Archivált fájl.txt

-ar--       2014.06.30.     20:49          0 Csak olvasható fájl.txt

-a---       2014.06.30.     20:49          0 Normál fájl.txt

-a---       2014.06.30.     20:50          0 Titkosított fájl.txt

-a---       2014.06.30.     20:51          0 Tömörített fájl.txt

A fenti példában a PSKönyv mappában mindenféle fájlt és mappát hoztam létre, de listázásukkor csak a nem rejtettek láthatók alaphelyzetben. Ahhoz, hogy a rejtetteket is lássuk használjuk a –Force kapcsolót:

PS C:\> Get-ChildItem C:\PSKönyv -Force

 

 

    Directory: C:\PSKönyv

 

 

Mode                LastWriteTime     Length Name

----                -------------     ------ ----

d----       2014.06.30.     20:49            Normál mappa

d--h-       2014.06.30.     20:49            Rejtett mappa

-----       2014.06.30.     20:50          0 Archivált fájl.txt

-ar--       2014.06.30.     20:49          0 Csak olvasható fájl.txt

-a---       2014.06.30.     20:49          0 Normál fájl.txt

-a-h-       2014.06.30.     20:49          0 Rejtett fájl.txt

-a---       2014.06.30.     20:50          0 Titkosított fájl.txt

-a---       2014.06.30.     20:51          0 Tömörített fájl.txt

Ha csak a mappákat szeretnénk látni, akkor PowerShell 2.0-ban sajnos Where-Object-el kell szűrnünk:

PS C:\> Get-ChildItem C:\PSKönyv | Where-Object {$_.psiscontainer}

 

 

    Directory: C:\PSKönyv

 

 

Mode                LastWriteTime     Length Name

----                -------------     ------ ----

d----       2014.06.30.     20:49            Normál mappa

PowerShell 3.0 felett használhatjuk a beépített szűrőket, mint például -Directory:

PS C:\> Get-ChildItem C:\PSKönyv -Directory

 

 

    Directory: C:\PSKönyv

 

 

Mode                LastWriteTime     Length Name

----                -------------     ------ ----

d----       2014.06.30.     20:49            Normál mappa

Sőt, itt használhatjuk a még általánosabb –Attributes paramétert is:

PS C:\> Get-ChildItem C:\PSKönyv -Attributes directory, hidden

 

 

    Directory: C:\PSKönyv

 

 

Mode                LastWriteTime     Length Name

----                -------------     ------ ----

d----       2014.06.30.     20:49            Normál mappa

d--h-       2014.06.30.     20:49            Rejtett mappa

-a-h-       2014.06.30.     20:49          0 Rejtett fájl.txt

A fenti példában megkaptam a mappákat ÉS a rejtett objektumokat. Ha azt szeretném, hogy csak a rejtett mappákat kapjam meg, akkor a következő jelölést használhatom:

PS C:\> Get-ChildItem C:\PSKönyv -Attributes directory+hidden

 

 

    Directory: C:\PSKönyv

 

 

Mode                LastWriteTime     Length Name

----                -------------     ------ ----

d--h-       2014.06.30.     20:49            Rejtett mappa

Tagadó jelleggel is lehet szűrni, például nem rejtett fájlok:

PS C:\> Get-ChildItem C:\PSKönyv -Attributes !ReadOnly+!Directory

 

 

    Directory: C:\PSKönyv

 

 

Mode                LastWriteTime     Length Name

----                -------------     ------ ----

-----       2014.06.30.     20:50          0 Archivált fájl.txt

-a---       2014.06.30.     20:49          0 Normál fájl.txt

-a---       2014.06.30.     20:50          0 Titkosított fájl.txt

-a---       2014.06.30.     20:51          0 Tömörített fájl.txt

Ezzel a szűréssel az alábbi attribútumokra és azok kombinációjára kereshetünk:

ReadOnly, Hidden, System, Directory, Archive, Device, Normal, Temporary, SparseFile, ReparsePoint, Compressed, Offline, NotContentIndexed, Encrypted, IntegrityStream, NoScrubData

Ha egy adott mélységben keresem a fájlokat és mappákat, akkor –Path-nak ilyen kifejezést használhatok:

PS C:\> Get-ChildItem –Path C:\PSKönyv\*\*

 

 

    Directory: C:\PSKönyv\Másik mappa

 

 

Mode                LastWriteTime     Length Name

----                -------------     ------ ----

d----       2014.06.30.     21:12            Ez egy mélyen levő mappa

-a---       2014.06.30.     21:09          0 Ez egy fájl.txt

 

 

    Directory: C:\PSKönyv\Normál mappa

 

 

Mode                LastWriteTime     Length Name

----                -------------     ------ ----

-a---       2014.06.30.     21:10          0 Ez egy nem txt.fájl

-a---       2014.06.30.     21:09          0 Ez is egy fájl.txt

Ha ezt szeretném szűrni TXT fájlokra, akkor használhatjuk a –Filter paramétert:

PS C:\> Get-ChildItem -Path C:\PSKönyv\*\* -Filter *.txt

 

 

    Directory: C:\PSKönyv\Másik mappa

 

 

Mode                LastWriteTime     Length Name

----                -------------     ------ ----

-a---       2014.06.30.     21:09          0 Ez egy fájl.txt

 

 

    Directory: C:\PSKönyv\Normál mappa

 

 

Mode                LastWriteTime     Length Name

----                -------------     ------ ----

-a---       2014.06.30.     21:09          0 Ez is egy fájl.txt

Ha olyan fájlokat keresek, amelyek NEM TXT kiterjesztésűek, akkor a –Filter paraméter helyett az ‑Exclude-ot használhatom. Ez (és az –Include paraméter) sajnos csak akkor működik megfelelően, ha a –Recurse, azaz tetszőleges mélységben keresünk:

PS C:\> Get-ChildItem C:\PSKönyv -Exclude *.txt -Recurse -Attributes !directory

 

 

 

    Directory: C:\PSKönyv\Normál mappa

 

 

Mode                LastWriteTime     Length Name

----                -------------     ------ ----

-a---       2014.06.30.     21:10          0 Ez egy nem txt.fájl

Előfordulhat, hogy a fájl nevében olyan speciális karakter van, amit a –Path paraméter speciális jelentéssel ruház fel. Például a következő kifejezéssel a minden olyan fájlt kilistázhatunk, aminek a neve Záró-val kezdődik és a „j”, „e”, „l”, „s” betű valamelyikével végződik:

PS C:\> Get-Item -Path C:\PSKönyv\záró[jeles].txt

 

 

    Directory: C:\PSKönyv

 

 

Mode                LastWriteTime     Length Name

----                -------------     ------ ----

-a---       2014.06.30.     21:22          0 Zárój.txt

-a---       2014.06.30.     21:22          0 Zárós.txt

De mi van akkor, ha nekem pont van egy ilyen nevű fájlom? Ekkor jön jól a –LiteralPath paraméter:

PS C:\> Get-Item -LiteralPath C:\PSKönyv\záró[jeles].txt

 

 

    Directory: C:\PSKönyv

 

 

Mode                LastWriteTime     Length Name

----                -------------     ------ ----

-a---       2014.06.30.     21:18          0 záró[jeles].txt

 



Word To HTML Converter