Naučite se Linuxa

Kako v Linuxu rekurzivno najti in našteti datoteke po datumu

Kako v Linuxu rekurzivno najti in našteti datoteke po datumu

Glavni razlog, da večina uporabnikov operacijskega sistema izbere Linux kot druge operacijske sisteme, je svoboda raziskovanja. Z Linuxom ste zavezani nekaterim ohlapno povezanim pravilom operacijskega sistema. OS vnaprej določi nekatera spremenljiva standardna pravila za uporabo v svojem okolju.

Ko spustite začetni plašč, lahko izstopite iz teh privzetih pravil in ustvarite svojega. V Linuxu je operacijski sistem vaš zvesti sluga in vi gospodar.

Ta primer v drugih distribucijah operacijskega sistema ni izvedljiv, saj je na mestu preveč abstrakcij. Tu so operacijski sistemi bolj vaš asistent. Nikoli ne morete imeti več moči kot operacijski sistem, kot v primeru Linuxa. Ko še naprej gradite svojo uporabniško izkušnjo v okolju z operacijskim sistemom Linux, bo radovednost vašega OS vsak dan naraščala. Vedno boste želeli vedeti, kaj se tu skriva in kaj lahko še naredite pod njegovim dežnikom.

Delo z datotekami in imeniki v Linuxu

Popoln scenarij je vaša vsakodnevna interakcija z datotekami in mapami v okolju operacijskega sistema Linux. Uporaba datotečnega sistema Linux OS je več kot le ustvarjanje, urejanje, spreminjanje in brisanje uporabniških datotečnih sistemov in map. Vsako dejanje, povezano z uporabniškimi datotekami in mapami / imeniki v okolju Linux, pušča uporabnikov odtis ali prstni odtis. To je kot vstop v sobo za dotik in izmenjavo predmetov.

Če najemodajalec ali skrbnik Linuxa upravlja to sobo, v katero ste vstopili, bo natančno vedel, kaj ste storili in katerih predmetov ste se dotaknili ali zamenjali. Linux ima uporabne ukaze, ki nam pomagajo doseči takšne rezultate. Vedeli boste, kaj se je zgodilo z datotekami in mapami v vašem OS Linux, in prepoznali ta dejanja glede na to, kdaj so se zgodila.

Skratka, pri obravnavi datotek in imenikov v okolju operacijskega sistema Linux lahko sestavimo časovni trak dogodkov za prepoznavanje ranljivih sprememb datotek prek časovnih žigov, priloženih vsaki spremembi. Kot prednost boste vedeli, ali je bila sprememba povezana z zlonamerno vsebino prek ustvarjenih sistemskih dnevnikov.

Ukazi za Linux

Pripravili bomo nekaj preprostih ukazov, ki nam bodo pomagali razumeti objektivizirane posledice tega članka. Najprej morate zagnati terminal in krmariti po sistemski poti, za katero veste, da ima veliko datotek in imenikov map. Da bi bili varni in se ne bi igrali z ranljivimi sistemskimi datotekami, lahko uporabite svoj imenik »Dokumenti«, ki je običajno vnaprej določen v operacijskem sistemu Linux. Naslednji ukaz vas bo pripeljal do tega imenika »Dokumenti«.

$ cd ~ / Dokumenti

Je priljubljen imenik z veliko datotekami in podimeniki. Drug imenik, ki ga je treba uporabiti za preizkus tega članka, je imenik »Prenosi«. Na enem mestu ne boste nikoli zamudili prenesenih datotek in drugih podimenikov.

$ cd ~ / prenosi

Za začetek tega eksperimenta potrebujemo nekaj povezanih vzorčnih izhodov iz našega terminala. Na terminalu bomo vnesli ukazni niz, ki nam bo omogočil seznam aktivnih datotek in z njimi povezanih podimenikov. Prav tako bo vsak element izhodnega izhoda tega ukaza povezan s časovnim žigom, ki kaže na zadnji poskus spreminjanja povezane datoteke, imenika ali podimenika.

Niz ukazov za uporabo je naslednji:

$ najdi . -printf '% T @% t% p \ n' | razvrsti -k 1 -n | cut -d "-f2-

Spodnji posnetek zaslona je rezultat za uporabo zgornjega ukaznega niza.

vzorčni izhod z uporabo ukaza find, sort in cut

Z analitičnega vidika spodnji zaslon izhoda ukaza predstavlja nedavno spremenjene elemente v nadrejenem delovnem imeniku. Izhodni seznam je lahko dolg, odvisno od datotek in map, ki jih imate na napravi. Pomikanje navzgor po izhodnem terminalu razkrije starejše datoteke in spremembe map. Če povzamemo, imamo izhod, ki uvršča najstarejše datoteke in spremembe map v najnovejše spremembe.

Kot ste opazili, ima zgornji ukazni niz, ki ste ga prilepili na terminal, tri pomembne argumente ukaza. Razumeti moramo, kaj počne vsak od njih.

Najti

Ukaz »najdi« je prvi, ki se izvede iz ukaznega niza. Njegov edini cilj je rekurzivno naštevanje aktivnih datotek in imenikov v nadrejenem delovnem imeniku. „.Argument, ki sledi argumentu "najdi", usmerja ta ukaz v trenutni delovni imenik. Če niste prepričani v imenik, v katerem ste; na terminalu lahko vpišete ukaz “pwd”. Natisnila bo pot do imenika, v katerem ste trenutno.

„.Argument "je preveden kot izhod ukaza" pwd ". Olajša iskanje datotek in imenikov trenutnega delovnega imenika. Naslednji argument ukaznega niza je “-printf”. Je zastavica za argument za tiskanje. Datoteke in imenike v trenutnem delovnem imeniku natisne v določeni obliki. Oblika, ki jo zahteva, je določena z argumentom "% T @% t% p \ n". Argument ukaza je tisti, ki mu takoj sledi.

Del tega argumenta '% T @' predstavlja čas obdobja. Po definiciji je čas epohe ali čas Unixa časovni žig 1. januarja 1970. Predstavljeno je kot 00:00:00 UTC. Izhodni podatki terminala v tej obliki predstavljajo datume sprememb, povezane z navedenimi datotekami in imeniki. Del argumenta '% t' zdaj zajema časovni format epohe za prikaz najnovejšega časovnega žiga sprememb, povezanega z navedenimi datotekami in imeniki.

Odvisno od vaše distribucije ali okusa v Linuxu, izhod terminala morda ne bo prikazal obdobja, povezanega z izhodnim seznamom spremenjenih datotek. Ta izjava je dokaz rezultatov mojega konca.

Del argumenta '% p' ​​prikaže imena prikazanih datotek v trenutnem delovnem imeniku. Končno, del argumenta '/ n' služi namenu znaka nove vrstice. Po vsakem zaporednem seznamu spremenjene datoteke ta znak nove vrstice zavzame kazalko zaslona in preskoči naslednji prikaz datoteke v novo vrstico na terminalskem zaslonu. Vsako prikazano datoteko lažje povežemo drugače.

Drug pristop k delu s prej navedenim ukaznim nizom je zamenjava dela "% t" argumenta "% T @% t% p \ n" z "% c". Nastali ukazni niz bi moral biti podoben temu:

$ najdi . -printf '% T @% c% p \ n' | razvrsti -k 1 -n | cut -d "-f2-

Rezultat izvajanja tega ukaznega niza naj bo rezultat, podoben spodnjemu posnetku zaslona.

spreminjanje argumentov v datoteki find rekurzivno

Opazovanje zgornjega posnetka zaslona močno razkrije naslednje opažanje. Izhodni seznam datotek v trenutnem delovnem imeniku se prikaže z "časom zadnje spremembe stanja" namesto s "časom spremembe". Gre za učinek zamenjave '% c' z '% t' v '% T @% t% p \ n'. Ta zadnji ukaz natisne spremembe dovoljenj, povezane z izpisanim seznamom datotek. Vsebina datotek se morda ne bo spremenila, vendar se z njimi povezani metapodatki.

Na tej stopnji izhodni rezultati ne sledijo nobenemu kronološkemu vrstnemu redu, saj bomo še obravnavali ukaz za razvrščanje. Najprej se natisne časovni žig spremembe, čemur sledi ime povezane datoteke.

Razvrsti

Ta argument ukaza ima tri parametre, in sicer '-k', '1' in 'n'. Ukaz za razvrščanje je odgovoren za vrstni red, v katerem se na naših zaslonih prikaže izpis seznama datotek. V tem primeru se najprej natisne datum spremembe, čemur sledi pot do spremenjene datoteke ali imenika. Del tega ukaznega argumenta označuje začetni položaj za začetek postopka razvrščanja.

Del '-k' argumenta za razvrščanje vsebuje vprašanje, na katerega odgovori del '1' istega argumenta. V tem primeru se postopek razvrščanja začne iz prvega stolpca, kot je označeno z '1'. Argument ukaza sort je odgovoren tudi za to, da je najnovejša spremenjena datoteka na dnu seznama, najstarejša pa na vrhu. Del argumenta '-n' je odgovoren za številsko vrednost časa z natančnostjo v decimalnih vejicah.

Če uporabite '-nr' namesto '-n', bodo na izhodu ukaznega niza novo spremenjene datoteke in imeniki na vrhu izhoda terminala, stare spremembe datotek pa na dnu. Obrne vrstni red razvrščanja izhoda terminala.

Cut

Glavni namen argumenta "cut" je uredno organizirati izpis našega terminala. Možnosti '-d' in "tega ukaznega argumenta ustvarijo presledke in nato odrežejo izpis podrobnosti o vsebini datoteke, ki bi lahko poskušal naslediti te presledke.

S tem preprostim ukaznim nizom lahko datoteke rekurzivno natisnete v trenutnem delovnem imeniku, pri čemer vsak izhod te datoteke poveže z datumi sprememb.

Alternativne možnosti ukaza

Lahko bi trdili, da ukaz “ls -lrt” popolnoma navaja vse datoteke znotraj aktivne poti imenika v vašem operacijskem sistemu Linux, od najstarejše do spremembe do najnovejše. Po drugi strani ta ukaz ne upošteva vsebine datoteke, ki obstaja v podmapah. Če seznam podimenikov ni vaš cilj, lahko v ukazni niz dodate argument »-type f«. Razmislite o naslednji spremembi ukaza.

$ najdi . -vnesite f -printf '% T @% t% p \ n' | razvrsti -k 1 -n | cut -d "-f2-

Uporaba argumenta ukaza “-type d” bo imela nasprotni učinek od zgornjega ukaza. Vaš terminal bo prikazal samo spremenjene imenike od najstarejšega do najnovejšega. Razmislite o njegovih posledicah na naslednji način:

$ najdi . -vnesite d -printf '% T @% t% p \ n' | razvrsti -k 1 -n | cut -d "-f2-

Končna opomba

Zdaj ste seznanjeni s postopkom rekurzivnega tiskanja datotek in imenikov v trenutnem delovnem imeniku z dodatnim znanjem o tem, kdaj so bile nazadnje spremenjene na podlagi pripadajočih časovnih žigov.

Iz tega znanja lahko sestavite časovni načrt dogodkov, ki kronološko razkrije vrstni red sprememb datotek in imenikov skupaj s potjo do njihovega prostora za shranjevanje.

Vadnica za OpenTTD
OpenTTD je ena izmed najbolj priljubljenih poslovnih simulacijskih iger. V tej igri morate ustvariti čudovit prevozniški posel. Vendar boste začeli na...
SuperTuxKart za Linux
SuperTuxKart je odličen naslov, zasnovan tako, da vam brezplačno ponuja izkušnjo Mario Kart v vašem sistemu Linux. Igrati je precej zahtevno in zabavn...
Vadnica za bitko za Wesnoth
Bitka za Wesnoth je ena izmed najbolj priljubljenih odprtokodnih strateških iger, ki jih lahko trenutno igrate. Ne samo, da se ta igra razvija že zelo...