det finns många sätt att lista filer och visa information om dem på Linux-system. Det här inlägget granskar ett antal kommandon som ger information om filer och ger alternativ för att anpassa dina fillistor för att möta dina behov.
de flesta kommandona listar filer i enskilda kataloger medan andra når så djupt in i ett filsystem som du bryr dig om att titta.
det primära kommandot för att lista filer är naturligtvis ls. Detta kommando har dock ett omfattande antal alternativ för att hitta och lista bara de filer du vill se. Dessutom finns det alltid att hjälpa till med mycket specifika filsökningar.
lista filer med namn
det enklaste sättet att lista filer med namn är helt enkelt att lista dem med kommandot ls. Att lista filer efter namn (alfanumerisk ordning) är trots allt standard. Du kan välja ls (inga detaljer) eller ls-l (massor av Detaljer) för att bestämma din vy.
$ ls | head -68pgs.pdfAesthetics_Thank_You.pdfalien.pdfAnnual_Meeting_Agenda-20190602.pdfbigfile.bz2bin$ ls -l | head -6-rw-rw-r-- 1 shs shs 10886 Mar 22 2019 8pgs.pdf-rw-rw-r-- 1 shs shs 284003 May 11 2019 Aesthetics_Thank_You.pdf-rw-rw-r-- 1 shs shs 38282 Jan 24 2019 alien.pdf-rw-rw-r-- 1 shs shs 97358 May 19 2019 Annual_Meeting_20190602.pdf-rw-rw-r-- 1 shs shs 18115234 Apr 16 17:36 bigfile.bz2drwxrwxr-x 4 shs shs 8052736 Jul 10 13:17 bin
rör utmatningen från ls till kommandot mer om du vill granska din lista en screenful åt gången.
lista filer i omvänd namnordning
för att vända listan över filer med namn, Lägg till alternativet-r (omvänd). Detta kommer att vara som att vända den normala noteringen upp och ner.
$ ls -r$ ls -lr
lista filer efter filtillägg
kommandot ls analyserar inte filtyper efter innehåll, men fungerar med filnamn. Det finns dock ett kommandoalternativ som kan lista filer i förlängningen. Om du lägger till alternativet-X sorterar ls filer efter namn inom varje tilläggskategori. Till exempel kommer det att lista filer utan tillägg först (i alfanumerisk ordning) följt av filer med tillägg som .1,. bz2,.c och så vidare.
notering kataloger endast
som standard visar ls-kommandot både filer och kataloger. Om du bara vill lista kataloger kan du använda alternativet-d. Du får en lista som den här:
$ ls -d */1/ backups/ modules/ projects/ templates/2/ html/ patches/ public/ videos/bin/ new/ private/ save/
lista filer efter storlek
om du vill lista filer i storleksordning, Lägg till alternativet-s. Observera dock att detta faktiskt inte visar storlekarna (tillsammans med andra Fildetaljer) om du inte också lägger till alternativet-l (lång lista). När du listar filer efter storlek är det generellt bra att se att kommandot gör vad du frågade. Observera att standard är att visa de största filerna först. Lägg till alternativet-r för att vända detta (dvs. ls-lSr).
$ ls -lStotal 959492-rw-rw-r-- 1 shs shs 357679381 Sep 19 2019 sav-linux-free-9.tgz-rw-rw-r-- 1 shs shs 103270400 Apr 16 17:38 bigfile-rw-rw-r-- 1 shs shs 79117862 Oct 5 2019 Nessus-8.7.1-ubuntu1110_amd64.deb
lista filer efter ägare
Om du vill lista filer efter ägare (t. ex., i en delad katalog) kan du skicka utmatningen från ls-kommandot för att sortera och välja ut ägarkolumnen genom att lägga till-k3 för att sortera i det tredje fältet.
$ ls -l | sort -k3 | moretotal 56-rw-rw-r-- 1 dory shs 0 Aug 23 12:27 tasklistdrwx------ 2 gdm gdm 4096 Aug 21 17:12 tracker-extract-files.121srwxr-xr-x 1 root root 0 Aug 21 17:12 ntf_listenerc0c6b8b4567drwxr-xr-x 2 root root 4096 Aug 21 17:12 hsperfdata_root
^
|
faktum är att du kan sortera på vilket fält som helst på detta sätt (t.ex. år). Var noga med att lägga till en ”n” – -k5n – om du sorterar på ett fält som är numeriskt eller du sorterar i alfanumerisk ordning. Denna sorteringsteknik är användbar för att sortera filinnehåll också, inte bara lista filer.
lista filer efter ålder
använd alternativet-t för att lista filer i åldersordning – hur nya de är. Lägg till alternativet-r för att få de senast uppdaterade filerna som visas senast i listan. Jag använder detta alias för att visa mig en lista över de filer som jag senast har uppdaterat:
$ alias recent='ls -ltr | tail -8'
Observera att filändrings-och modifieringstiderna är olika. Alternativen-c (change) och-t (modification) ger inte alltid samma resultat. Om du ändrar behörigheter för en fil och inget annat, kommer-c att sätta filerna högst upp i ls-utgången medan-t inte kommer. Om du är nyfiken på skillnaden, titta på utgången från stat-kommandot.
$ stat ckacct File: ckacct Size: 200 Blocks: 8 IO Block: 4096 regular fileDevice: 801h/2049d Inode: 829041 Links: 1Access: (0750/-rwxr-x---) Uid: ( 1000/ shs) Gid: ( 1000/ shs)Access: 2020-08-20 16:10:11.063015008 -0400Modify: 2020-08-17 07:26:34.579922297 -0400 <== content changesChange: 2020-08-24 09:36:51.699775940 -0400 <== content or permissions changes Birth: -
lista filer efter grupp
för att sortera filer efter de associerade grupperna kan du skicka utmatningen från en lång lista till sorteringskommandot och berätta för det att sortera på kolumn 4.
$ ls -l | sort -k4
lista filer efter åtkomstdatum
för att lista filer efter åtkomstdatum (senast åtkomst först), använd-ltu-alternativen. ”U ”verkställer” efter åtkomstdatum ” noteringsorder.
$ ls -ltutotal 959500-rwxr-x--- 1 shs shs 200 Aug 24 09:42 ckacct <== most recently used-rw-rw-r-- 1 shs shs 1335 Aug 23 17:45 lte
lista flera filer på en enda rad
Ibland är en kondenserad fillista mer lämplig för uppgiften. Ls-kommandot har till och med alternativ för det. För att lista filer på så få rader som möjligt kan du använda –format=comma för att separera filnamn med kommatecken som i det här kommandot:
$ ls --format=comma1, 10, 11, 12, 124, 13, 14, 15, 16pgs-landscape.pdf, 16pgs.pdf, 17, 18, 19,192.168.0.4, 2, 20, 2018-12-23_OoS_2.pdf, 2018-12-23_OoS.pdf, 20190512_OoS.pdf,'2019_HOHO_application working.pdf' …
föredrar du vitt utrymme? Använd –format = across istället.
$ ls --format=across z*z zip zipfiles zipfiles1.bat zipfiles2.batzipfiles3.bat zipfiles4.bat zipfiles.bat zoom_amd64.deb zoomap.pdfzoom-mtg
lägga till djup i dina sökningar
medan ls i allmänhet listar filer i en enda katalog kan du istället välja att rekursivt lista filer med hjälp av-R-alternativen, djupdykning i hela katalogdjupet:
$ ls -R zzzzz | grep -v "^$"zzzzz:zzzzzzzzz/zzzz:zzzzzzzz/zzzz/zzz:zzzzzzz/zzzz/zzz/zz:zzzzzz/zzzz/zzz/zz/z:sleeping
Alternativt kan du använda ett sökkommando med en begränsad eller obegränsad djupspecifikation. I det här kommandot instruerar vi find-kommandot att bara titta på tre nivåer av kataloger:
$ find zzzzz -maxdepth 3zzzzzzzzzz/zzzzzzzzz/zzzz/zzzzzzzz/zzzz/zzz/zz
välja ls vs find
När du behöver lista filer som uppfyller en mycket selektiv lista med krav är find-kommandot förmodligen ett bättre verktyg att använda än ls.
Till skillnad från ls ser find-kommandot så djupt som möjligt om du inte begränsar det. Det har också många andra alternativ och ett-exec-kommando som låter dig vidta vissa specifika åtgärder när du hittar filerna du letar efter.
Wrap-Up
kommandot ls har många alternativ för att lista filer. Kolla in dem. Du kanske hittar några som du kommer att älska.