Tips en Trucs 2023

Bestanden zoeken en sorteren

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.

Enkele manieren om bestanden te sorteren op datum en tijd

Op wijzigingstijd

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
...

Op toegangstijd

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
...

Op veranderingstijd

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.

Zoeken en sorteren

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.

Op maand

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

Op datum

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

Op toegangstijd

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 resultaten van ls sorteren

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
find sort