GNU/Linux >> Znalost Linux >  >> Linux

Jak rekurzivně najít a vypsat soubory podle data v Linuxu

Hlavním důvodem, proč většina uživatelů operačních systémů volí Linux před jinými operačními systémy, je svoboda prozkoumávat. S Linuxem jste vázáni některými volně spojenými pravidly operačního systému. OS předdefinuje některá měnitelná standardní pravidla pro použití v jeho prostředí.

Jakmile svléknete kabát pro začátečníky, můžete se zbavit těchto výchozích pravidel a vytvořit si vlastní. Pod Linuxem je operační systém vaším věrným služebníkem a vy pánem.

Tento případ není životaschopný v jiných distribucích operačního systému, protože existuje příliš mnoho abstrakcí. Operační systémy jsou zde spíše vaším pomocníkem. Nikdy nemůžete mít větší výkon než operační systém, jako v případě Linuxu. Jak budete pokračovat v budování své uživatelské zkušenosti v prostředí operačního systému Linux, vaše zvědavost na operační systém bude každým dnem růst. Vždy budete chtít vědět, co se zde skrývá a co ještě můžete pod jeho deštníkem dělat.

Práce se soubory a adresáři v systému Linux

Dokonalým scénářem je vaše každodenní interakce se soubory a složkami v prostředí operačního systému Linux. Používání souborového systému operačního systému Linux zahrnuje více než jen vytváření, úpravy, úpravy a mazání uživatelských systémů souborů a složek. Každá akce spojená s uživatelskými soubory a složkami/adresáři v prostředí Linuxu zanechá uživatelskou stopu nebo otisk prstu. Je to jako vejít do místnosti a dotýkat se věcí a vyměňovat si je.

Pokud tuto místnost, do které jste vstoupili, spravuje pronajímatel nebo správce Linuxu, bude přesně vědět, co jste dělali a kterých položek jste se dotkli nebo je vyměnili. Linux má užitečné příkazy, které nám pomohou dosáhnout takových výsledků. Budete vědět, co se stalo se soubory a složkami ve vašem operačním systému Linux, a identifikujete tyto akce na základě toho, kdy k nim došlo.

Stručně řečeno, při práci se soubory a adresáři v prostředí operačního systému Linux můžeme vytvořit časovou osu událostí, která identifikuje zranitelné úpravy souborů pomocí časových razítek připojených ke každé úpravě. Výhodou je, že prostřednictvím vygenerovaných systémových protokolů budete vědět, zda byla úprava spojena se škodlivým obsahem.

Příkazy pro Linux k použití

Uvedeme několik jednoduchých příkazů, které nám pomohou pochopit objektivní implikaci tohoto článku. Nejprve musíte spustit terminál a přejít na systémovou cestu, o které víte, že obsahuje mnoho souborů a adresářů složek. Abyste byli v bezpečí a nehráli si se svými zranitelnými systémovými soubory, můžete použít svůj adresář „Dokumenty“, který je obvykle předdefinován v operačním systému Linux. Následující příkaz by vás měl dostat do tohoto adresáře „Dokumenty“.

$ cd ~/Documents

Je to oblíbený adresář s mnoha soubory a podadresáři. Dalším adresářem, který lze použít pro tento experiment s článkem, je adresář „Downloads“. Je to jedno místo, kde vám nikdy neuniknou stažené soubory a další podadresáře.

$ cd ~/Downloads

Abychom tento experiment zahájili, potřebujeme nějaký relevantní výstup vzorku z našeho terminálu. Na našem terminálu zadáme příkazový řetězec, který nám umožní vypsat aktivní soubory a jejich přidružené podadresáře. Každý prvek výsledného výstupu z tohoto příkazu bude také spojen s časovým razítkem, které ukazuje na poslední pokus o úpravu souvisejícího souboru, adresáře nebo podadresáře.

Příkazový řetězec, který se má použít, je následující:

$ find . -printf '%T@ %t %p\n' | sort -k 1 -n | cut -d' ' -f2-

Snímek obrazovky níže je výstupem pro použití výše uvedeného příkazového řetězce.

Z analytického hlediska představuje spodní obrazovka výstupu příkazu nedávno upravené položky ve vašem nadřazeném pracovním adresáři. Výstupní seznam může být dlouhý v závislosti na souborech a složkách, které máte na svém počítači. Posouváním nahoru na výstupním terminálu odhalíte starší soubory a úpravy složek. Stručně řečeno, máme výstup, který řadí nejstarší úpravy souborů a složek k nejnovějším úpravám.

Jak jste si všimli, výše uvedený příkazový řetězec, který jste vložili do svého terminálu, má tři důležité argumenty příkazu. Musíme pochopit, co každý z nich dělá.

Najít

Příkaz „najít“ je první, který se provede z příkazového řetězce. Jeho jediným cílem je rekurzivně vypsat aktivní soubory a adresáře ve vašem nadřazeném pracovním adresáři. "." argument, který následuje za argumentem „najít“, ukazuje tento příkaz na aktuální pracovní adresář. Pokud si nejste jisti adresářem, ve kterém se nacházíte; můžete zadat příkaz „pwd“ na vašem terminálu. Vypíše cestu k adresáři, ve kterém se aktuálně nacházíte.

"." argument je přeložen jako výstup příkazu „pwd“. Usnadňuje hledání souborů a adresářů vašeho aktuálního pracovního adresáře. Dalším argumentem v příkazovém řetězci je „-printf“. Je to příznak pro argument tisku. Vytiskne soubory a adresáře ve vašem aktuálním pracovním adresáři v určeném formátu. Formát je určen argumentem „%T@%t%p\n“. Je to argument příkazu, který za ním bezprostředně následuje.

Část „%T@“ tohoto argumentu představuje dobu epochy. Podle definice je čas epochy nebo epocha Unixu časové razítko 1. ledna 1970. Je reprezentováno jako 00:00:00 UTC. Výstup na vašem terminálu má tento formát, který představuje data modifikace spojená s uvedenými soubory a adresáři. Část argumentu ‚%t‘ nyní přebírá formát času epochy, aby se zobrazila poslední časová známka změny související s uvedenými soubory a adresáři.

V závislosti na vaší distribuci nebo variantě Linuxu nemusí výstup terminálu zobrazovat čas epochy spojený s výstupním seznamem upravených souborů. Toto prohlášení je důkazem výstupu z mého konce.

Část argumentu ‚%p‘ vypíše názvy zobrazených souborů v tomto aktuálním pracovním adresáři. A konečně, část argumentu „/n“ slouží účelu znaku nového řádku. Po každém následném výpisu upraveného souboru tento znak nového řádku převezme kurzor na displeji a přeskočí zobrazení dalšího souboru na nový řádek na obrazovce terminálu. Usnadňuje nám to přiřadit každý zobrazený soubor odlišně.

Dalším přístupem k práci s dříve uvedeným příkazovým řetězcem je nahrazení části „%t“ argumentu „%T@%t%p\n“ argumentem „%c“. Výsledný příkazový řetězec by měl vypadat podobně jako následující:

$ find . -printf '%T@ %c %p\n' | sort -k 1 -n | cut -d' ' -f2-

Výstup spuštění tohoto příkazového řetězce by měl vytvořit výstup podobný následujícímu snímku obrazovky.

Pozorování výše uvedeného snímku obrazovky jasně odhalí následující postřeh. Výstupní seznam souborů v aktuálním pracovním adresáři se zobrazí s „časem poslední změny stavu“ namísto „časem změny“. Je to důsledek nahrazení „%c“ za „%t“ v „%T@%t%p\n“. Tento poslední příkaz vytiskne změny oprávnění související se seznamem výstupních souborů. Obsah souborů se nemusí změnit, ale metadata s nimi spojená ano.

V této fázi výstupní výsledky nesledují žádné chronologické pořadí, protože se teprve musíme zabývat příkazem řazení. Nejprve se vytiskne časové razítko modifikace a poté název přidruženého souboru.

Řadit

Tento argument příkazu má tři parametry, konkrétně ‚-k‘, ‚1‘ a ‚n‘. Příkaz sort je zodpovědný za pořadí, ve kterém se výstup seznamu souborů objeví na našich obrazovkách. V tomto případě se nejprve vytiskne datum úpravy a poté cesta k upravenému souboru nebo adresáři. Část „-k“ tohoto argumentu příkazu označuje počáteční pozici pro zahájení procesu řazení.

Část „-k“ argumentu příkazu sort obsahuje otázku zodpovězenou částí „1“ stejného argumentu. V tomto případě proces třídění začíná od prvního sloupce označeného „1“. Argument příkazu sort je také zodpovědný za to, že nejnovější upravený soubor je na konci seznamu a nejstarší na začátku. Část argumentu „-n“ odpovídá za číselný údaj času s přesností na desetinné čárky.

Pokud použijete „-nr“ místo „-n“, výstup příkazového řetězce bude mít nově upravené soubory a adresáře nad výstupem terminálu a staré úpravy souborů dole. Obrátí pořadí řazení výstupu terminálu.

Vyjmout

Hlavním účelem argumentu příkazu „cut“ je uspořádat výstup našeho výtisku terminálu uspořádaným způsobem. Volby '-d' a ' ' tohoto argumentu příkazu se kombinují, aby vygenerovaly bílé mezery a poté ořízly výtisk podrobností o obsahu souboru, který by se mohl pokusit nahradit tyto mezery.

Pomocí tohoto jednoduchého příkazového řetězce můžete rekurzivně tisknout soubory ve vašem aktuálním pracovním adresáři, přičemž každý výstup spojuje uvedené soubory s daty jejich modifikace.

Alternativní možnosti příkazů

Můžete namítnout, že příkaz „ls -lrt“ dokonale vypíše všechny soubory v rámci cesty aktivního adresáře ve vašem operačním systému Linux, od nejstarších po úpravy až po nejnovější. Na druhou stranu tento příkaz nebere v úvahu obsah souboru existujícího v podsložkách. Pokud není vaším cílem vypisování podadresářů, můžete do příkazového řetězce přidat argument „-type f“. Zvažte následující úpravu příkazu.

$ find . -type f -printf '%T@ %t %p\n' | sort -k 1 -n | cut -d ' ' -f2-

Použití argumentu příkazu „-type d“ bude mít opačný účinek než výše uvedený příkaz. Váš terminál bude vydávat pouze upravené adresáře od nejstaršího po nejnovější. Zvažte jeho důsledky následovně:

$ find . -type d -printf '%T@ %t %p\n' | sort -k 1 -n | cut -d ' ' -f2-

Poznámka na závěr

Nyní jste obeznámeni s návodem na rekurzivní tisk souborů a adresářů ve vašem aktuálním pracovním adresáři s dodatečnými znalostmi o tom, kdy byly naposledy změněny na základě jejich přiřazených časových razítek.

Na základě těchto znalostí máte možnost sestavit časovou osu událostí, která chronologicky odhaluje pořadí úprav souborů a adresářů spolu s cestou k umístění jejich úložiště.


Linux
  1. Jak najít a seřadit soubory na základě data a času úpravy v Linuxu

  2. Linux – získávání souborů pro aktuální datum v Linuxu?

  3. Jak používat Linuxový příkaz find k hledání souborů

  1. Jak vyhledávat a odstraňovat adresáře rekurzivně v systému Linux

  2. Jak rekurzivně vypsat všechny soubory a adresáře

  3. Jak rekurzivně vypisovat soubory a třídit je podle času úpravy?

  1. Najděte největší soubory a adresáře v Linuxu

  2. Jak najít všechny řídké soubory v Linuxu

  3. Jak vypsat všechny soubory oddílu na linuxu?