Meestal hebben we de gewoonte om veel informatie op te slaan in de vorm van bestanden. Soms als verborgen bestanden, soms bewaard in een aparte map gemaakt voor ons gemak, soms willekeurig! Maar, al deze bestanden vullen onze mappen, meestal de Persoonlijke map, waardoor het lijkt op een stort. Maar een probleem ontstaat wanneer we in deze enorme verzameling moeten zoeken naar een bepaald bestand dat op een bepaalde datum en tijd is gewijzigd.
Mensen die vertrouwd zijn met de muis en grafische omgevingen (GUI's) kunnen het vinden met een bestandsbeheerder, dat bestanden opsomt in lange lijsten, waardoor het gemakkelijk is om uit te zoeken wat we willen, maar gebruikers die de gewoonte hebben zwarte schermen te zien, of zelfs iedereen die op servers werkt die geen GUI's hebben, zouden een eenvoudige opdracht of een reeks opdrachten willen die het zoeken kunnen vergemakkelijken.
De echte kracht van Linux wordt hier getoond, want Linux heeft een verzameling opdrachten die afzonderlijk of samen kunnen worden gebruikt om een bestand te zoeken, of een verzameling bestanden te sorteren op naam, wijzigingsdatum , aanmaaktijd , of zelfs elk filter dat je kunt bedenken om het gewenste resultaat te krijgen.
Eerst openen we de map waarin we willen werken:
dany@pindabook:~> cd Afbeeldingen/Achtergronden/
De volgende opdracht geeft een lijst van bestanden met details, en sorteert de bestanden op basis van hun wijzigingstijd, nieuwste eerst. Om in omgekeerde volgorde te sorteren, gebruik je de optie '-r'.
dany@pindabook:~/Afbeeldingen/Achtergronden> ls -lt
totaal 34912
-rw-r--r-- 1 dany users 335855 1 dec 13:30 planet_green_nature_space_leaves_tree_84720_1920x1080.jpg
-rw-r--r-- 1 dany users 497190 23 nov 16:36 water_falls_jungle_wood_1138_1920x1080.jpg
-rw-r--r-- 1 dany users 573947 13 okt 14:29 trail_forest_grass_396572_1920x1080.jpg
-rw-r--r-- 1 dany users 562707 8 sep 16:31 forest_trees_mountains_365350_1920x1080.jpg
-rw-r--r-- 1 dany users 558773 29 aug 2022 lavender_field_flowers_356080_1920x1080.jpg
-rw-r--r-- 1 dany users 581437 16 aug 2022 trees_road_water_346193_1920x1080.jpg
-rw-r--r-- 1 dany users 205167 20 jul 2022 river_ice_mountains_323708_1920x1080.jpg
-rw-r--r-- 1 dany users 336486 31 mei 2022 icebergs_ice_snow_297410_1920x1080.jpg
-rw-r--r-- 1 dany users 293732 22 mei 2022 th?id=OHR.ZebraEgret_ROW1402853310_1920x1080.jpg
-rw-r--r-- 1 dany users 198246 26 apr 2022 sea_sunset_horizon_280357_1920x1080.jpg
...
Lijst van bestanden in de actieve map op basis van de laatste toegangstijd, d.w.z. op basis van de tijd dat het bestand voor het laatst werd geopend, niet gewijzigd.
dany@pindabook:~/Afbeeldingen/Achtergronden> ls -ltu
totaal 34912
-rw-r--r-- 1 dany users 241897 9 mrt 14:33 mountains_hill_trees_119596_1920x1080.jpg
-rw-r--r-- 1 dany users 194251 9 mrt 14:33 coast_sand_water_218419_1920x1080.jpg
-rw-r--r-- 1 dany users 252441 6 mrt 18:09 mountains_trees_forest_221730_1920x1080.jpg
-rw-r--r-- 1 dany users 440046 6 mrt 18:09 mountain_peak_trees_192420_1920x1080.jpg
-rw-r--r-- 1 dany users 107229 5 mrt 18:44 branches_berries_blue_194435_1920x1080.jpg
-rw-r--r-- 1 dany users 391267 4 mrt 15:19 waves_water_body_of_water_197484_1920x1080.jpg
-rw-r--r-- 1 dany users 267750 4 mrt 15:19 waves_ripples_water_199789_1920x1080.jpg
-rw-r--r-- 1 dany users 624096 4 mrt 15:19 waterfall_water_trees_226800_1920x1080.jpg
-rw-r--r-- 1 dany users 497190 4 mrt 15:19 water_falls_jungle_wood_1138_1920x1080.jpg
-rw-r--r-- 1 dany users 477872 4 mrt 15:19 village_buildings_mountain_194278_1920x1080.jpg
...
Lijst van bestanden in de actieve map op basis van de laatste wijzigingstijd van de statusinformatie van het bestand, of de 'ctime'. Deze opdracht geeft als eerste het bestand weer waarvan de statusinformatie zoals: eigenaar, groep, rechten, grootte etc. recentelijk is gewijzigd.
dany@pindabook:~/Afbeeldingen/Achtergronden> ls -ltc
totaal 34912
-rw-r--r-- 1 dany users 241897 9 mrt 14:33 mountains_hill_trees_119596_1920x1080.jpg
-rw-r--r-- 1 dany users 252441 6 mrt 18:09 mountains_trees_forest_221730_1920x1080.jpg
-rw-r--r-- 1 dany users 315172 26 feb 14:35 branches_leaves_palm_197096_1920x1080.jpg
-rw-r--r-- 1 dany users 581828 25 feb 17:39 forest_mountains_river_253803_1920x1080.jpg
-rw-r--r-- 1 dany users 539319 23 feb 14:45 tree_branches_snow_201353_1920x1080.jpg
-rw-r--r-- 1 dany users 198246 5 feb 13:41 sea_sunset_horizon_280357_1920x1080.jpg
-rw-r--r-- 1 dany users 382134 28 jan 14:30 forest_trees_lake_206063_1920x1080.jpg
-rw-r--r-- 1 dany users 349408 20 jan 18:28 rock_tree_grass_196400_1920x1080.jpg
-rw-r--r-- 1 dany users 189342 16 jan 18:15 clouds_rays_sun_216540_1920x1080.jpg
...
Als de optie -a
wordt gebruikt met bovenstaande opdrachten, kunnen ze zelfs de verborgen bestanden in de actieve map weergeven en sorteren.
De optie -r
geeft de uitvoer weer in omgekeerde volgorde.
Voor meer sorteermogelijkheden, zoals sorteren op de uitvoer van de find
opdracht (werkt ook met ls
uitvoer), is de sort
opdracht nuttiger omdat de uitvoer niet alleen de bestandsnaam kan bevatten, maar alle door de gebruiker gewenste velden.
Hier gebruiken we de find
opdracht om alle bestanden in de etc ('/etc/') map te vinden en drukken het resultaat af als: Maand waarin het bestand is geopend en vervolgens de bestandsnaam.
Van dat volledige resultaat geven we hier de eerste 11 weer.
dany@pindabook:~/Afbeeldingen/Achtergronden> find /etc/ -type f -printf "\n%Ab %p" | head -n 11
jun /etc/zsh_command_not_found
mei /etc/dnsmasq.d/trust-anchors.conf
mrt /etc/machine-id
feb /etc/pam.d/sudo
mrt /etc/pam.d/common-password-pc
mrt /etc/pam.d/common-account-pc
mrt /etc/pam.d/other
jan /etc/pam.d/runuser
mrt /etc/pam.d/sddm-greeter
mei /etc/pam.d/xscreensaver
De volgende opdracht sorteert de uitvoer op het eerste veld, opgegeven door -k1
en sorteert dan op maand, opgegeven door M
.
dany@pindabook:~/Afbeeldingen/Achtergronden> find /etc/ -type f -printf "\n%Ab %p" | head -n 11 | sort -k1M
jan /etc/pam.d/runuser
feb /etc/pam.d/sudo
mrt /etc/machine-id
mrt /etc/pam.d/common-account-pc
mrt /etc/pam.d/common-password-pc
mrt /etc/pam.d/other
mrt /etc/pam.d/sddm-greeter
mei /etc/dnsmasq.d/trust-anchors.conf
mei /etc/pam.d/xscreensaver
jun /etc/zsh_command_not_found
Ook hier gebruiken we de opdracht find
om alle bestanden in de etc map te vinden, maar nu drukken we het resultaat af als: laatste datum waarop het bestand is geopend, laatste tijd dat het bestand is geopend en vervolgens de bestandsnaam.
Daarvan nemen we de eerste 11 eruit.
dany@pindabook:~/Afbeeldingen/Achtergronden>cd
dany@pindabook:~>find /etc/ -type f -printf "\n%AD %AT %p" | head -n 11
06/11/22 14:05:00.0000000000 /etc/zsh_command_not_found 05/08/22 00:48:46.0000000000 /etc/dnsmasq.d/trust-anchors.conf 03/11/23 14:35:29.2441147070 /etc/machine-id 02/24/23 14:10:14.9717267700 /etc/pam.d/sudo 03/11/23 14:35:34.2045257600 /etc/pam.d/common-password-pc 03/11/23 14:35:34.2045257600 /etc/pam.d/common-account-pc 03/11/23 14:35:34.2125258560 /etc/pam.d/other 01/10/23 18:21:26.0000000000 /etc/pam.d/runuser 03/09/23 14:59:37.3297414150 /etc/pam.d/sddm-greeter 05/08/22 09:48:56.0000000000 /etc/pam.d/xscreensaver
De volgende sorteeropdracht sorteert eerst op basis van het jaar, daarna op basis van de maand en tenslotte op basis van de dag.
Hier betekent 1.7
de zevende kolom van het eerste veld en n
erna betekent numeriek sorteren.
dany@pindabook:~> find /etc/ -type f -printf "\n%AD %AT %p" | head -n 11 | sort -k1.7n -k1.1n -k1.4n 05/08/22 00:48:46.0000000000 /etc/dnsmasq.d/trust-anchors.conf 05/08/22 09:48:56.0000000000 /etc/pam.d/xscreensaver 06/11/22 14:05:00.0000000000 /etc/zsh_command_not_found 01/10/23 18:21:26.0000000000 /etc/pam.d/runuser 02/24/23 14:10:14.9717267700 /etc/pam.d/sudo 03/09/23 14:59:37.3297414150 /etc/pam.d/sddm-greeter 03/11/23 14:35:29.2441147070 /etc/machine-id 03/11/23 14:35:34.2045257600 /etc/pam.d/common-account-pc 03/11/23 14:35:34.2045257600 /etc/pam.d/common-password-pc 03/11/23 14:35:34.2125258560 /etc/pam.d/other
Ook hier gebruiken we de find opdracht om de eerste 11 bestanden in de etc map op te sommen en het resultaat af te drukken in het formaat: laatste keer dat het bestand werd geopend en vervolgens de bestandsnaam.
dany@pindabook:~> find /etc/ -type f -printf "\n%AT %p" | head -n 11
14:05:00.0000000000 /etc/zsh_command_not_found
00:48:46.0000000000 /etc/dnsmasq.d/trust-anchors.conf
14:35:29.2441147070 /etc/machine-id
14:10:14.9717267700 /etc/pam.d/sudo
14:35:34.2045257600 /etc/pam.d/common-password-pc
14:35:34.2045257600 /etc/pam.d/common-account-pc
14:35:34.2125258560 /etc/pam.d/other
18:21:26.0000000000 /etc/pam.d/runuser
14:59:37.3297414150 /etc/pam.d/sddm-greeter
09:48:56.0000000000 /etc/pam.d/xscreensaver
De volgende opdracht sorteert de uitvoer op basis van de eerste kolom van het eerste veld van de uitvoer, namelijk de tijd.
dany@pindabook:~> find /etc/ -type f -printf "\n%AT %p" | head -n 11 | sort -k1.1n
00:48:46.0000000000 /etc/dnsmasq.d/trust-anchors.conf
09:48:56.0000000000 /etc/pam.d/xscreensaver
14:05:00.0000000000 /etc/zsh_command_not_found
14:10:14.9717267700 /etc/pam.d/sudo
14:35:29.2441147070 /etc/machine-id
14:35:34.2045257600 /etc/pam.d/common-account-pc
14:35:34.2045257600 /etc/pam.d/common-password-pc
14:35:34.2125258560 /etc/pam.d/other
14:59:37.3297414150 /etc/pam.d/sddm-greeter
18:21:26.0000000000 /etc/pam.d/runuser
De volgende opdracht sorteert de uitvoer van ls -l
op basis van het 7de veld (de maand) en vervolgens op basis van het 6de veld (de datum) numeriek.
dany@pindabook:~> ls -l /etc/ | sort -k7M -k6n | head
totaal 2540
drwxr-xr-x 2 root root 4096 10 jan 18:21 issue.d
-rw-r--r-- 1 root root 135 10 jan 18:21 blkid.conf
drwxr-x--- 2 root root 4096 16 jan 13:57 sudoers.d
-r--r----- 1 root root 3272 16 jan 13:57 sudoers
-rw-r--r-- 1 root root 4577 16 jan 13:57 sudo.conf
-rw-r--r-- 1 root root 9390 16 jan 13:57 sudo_logsrvd.conf
-rw-r--r-- 1 root root 117 19 jan 12:26 dracut.conf
drwxr-xr-x 3 root root 4096 26 jan 15:50 openldap
-rw-r--r-- 1 root root 1991 26 jan 15:50 bind.keys