Lär dig Linux

Hur man rekursivt hittar och listar filerna efter datum i Linux

Hur man rekursivt hittar och listar filerna efter datum i Linux

Den främsta anledningen till att de flesta operativsystemanvändare väljer Linux framför andra operativsystem är friheten att utforska. Med Linux är du bunden till några löst kopplade operativsystemregler. Operativsystemet fördefinierar några föränderliga standardregler som ska användas i sin miljö.

När du väl har tappat nybörjarkåpan kan du ta dig ur dessa standardregler och skapa din egen. Under Linux är operativsystemet din lojala tjänare och du är mästaren.

Detta fall är inte genomförbart i andra operativsystemdistributioner eftersom det finns för många abstraktioner på plats. Operativsystemen här är mer av din assistent. Du kan aldrig ha mer kraft än operativsystemet, som i fallet med Linux. När du fortsätter att bygga din användarupplevelse under en Linux OS-miljö kommer din OS-nyfikenhet att växa dagligen. Du kommer alltid att vilja veta vad som är gömt här och vad mer du kan göra under paraplyet.

Arbetar med filer och kataloger på Linux

Ett perfekt fallsscenario är din dagliga interaktion med filer och mappar under Linux-operativsystemmiljön. Det finns mer att använda Linux OS-filsystemet än att bara skapa, redigera, modifiera och ta bort användarfilsystem och mappar. Varje åtgärd kopplad till användarfiler och mappar / kataloger under en Linux-miljö lämnar ett användaravtryck eller fingeravtryck. Det är som att gå in i ett rum för att röra vid och byta saker.

Om en Linux-hyresvärd eller vaktmästare hanterar det här rummet du gick in, kommer det att veta exakt vad du gjorde och vilka saker du rörde till eller bytte ut. Linux har användbara kommandon som hjälper oss att uppnå sådana resultat. Du kommer att veta vad som hände med filerna och mapparna i ditt Linux OS och identifiera dessa åtgärder baserat på när de hände.

Kort sagt, när vi hanterar filer och kataloger under en Linux-operativsystemmiljö kan vi bygga en händelsetidslinje för att identifiera sårbara filändringar genom tidsstämplar som bifogas varje modifiering. Som en fördel vet du om ändringen var associerad med skadligt innehåll genom de genererade systemloggarna.

Linux-kommandon att använda

Vi kommer att leda några enkla kommandon för att hjälpa oss förstå den objektiviserade innebörden av denna artikel. Du måste först starta din terminal och navigera i en systemväg som du vet har många filer och mappkataloger. För att vara säker och inte leka med dina sårbara systemfiler kan du använda katalogen ”Dokument” som vanligtvis är fördefinierad i Linux-operativsystemet. Följande kommando ska ta dig till den här "Dokument" -katalogen.

$ cd ~ / Dokument

Det är en populär katalog med många filer och underkataloger. En annan katalog att använda för denna artikelexperiment är katalogen "Nedladdningar". Det är en plats du aldrig kommer att sakna nedladdade filer och andra underkataloger.

$ cd ~ / Nedladdningar

För att starta detta experiment behöver vi en del relatabel provutgång från vår terminal. Vi kommer att skriva in en kommandosträng på vår terminal som gör det möjligt för oss att lista aktiva filer och tillhörande underkataloger. Dessutom kommer varje element i den resulterande utgången från detta kommando att länkas med en tidsstämpel som pekar på det senaste modifieringsförsöket i den associerade filen, katalogen eller underkatalogen.

Kommandosträngen som ska användas är som följer:

$ hitta . -printf '% T @% t% p \ n' | sortera -k 1 -n | klipp -d "-f2-

Skärmdumpen nedan är resultatet för att använda ovanstående kommandosträng.

provutdata från kommandot hitta, sortera och klipp ut

Ur en analytisk synpunkt representerar den nedre skärmen på kommandoutgången de nyligen modifierade objekten i din förälders arbetskatalog. Utmatningslistan kan vara lång, beroende på vilka filer och mappar du har på din maskin. Att bläddra uppåt på utgångsterminalen avslöjar äldre filer och mappändringar. Sammanfattningsvis har vi en utgång som rankar de äldsta filerna och mappändringarna till de senaste ändringarna.

Som du har märkt har kommandosträngen ovan som du har klistrat in på din terminal tre viktiga kommandoargument. Vi måste förstå vad var och en av dem gör.

Hitta

Kommandot "hitta" är det första som körs från kommandosträngen. Det har det enda målet att rekursivt lista de aktiva filerna och katalogerna i din förälders arbetskatalog. ”.”Argument som följer“ hitta ”argumentet pekar detta kommando till den aktuella arbetskatalogen. Om du inte är säker på den katalog du är under; du kan skriva in kommandot "pwd" på din terminal. Det kommer att skriva ut sökvägen till den katalog du befinner dig under.

”.”Argumentet översätts som utdata från kommandot“ pwd ”. Det gör det lättare att hitta filerna och katalogerna i din nuvarande arbetskatalog. Nästa argument på kommandosträngen är “-printf”. Det är en flagga för ett utskriftsargument. Den skriver ut filerna och katalogerna i din nuvarande arbetskatalog i ett angivet format. Formatet det tar specificeras av argumentet “% T @% t% p \ n”. Det är kommandoargumentet som följer direkt.

Delen '% T @' i detta argument representerar epoktiden. Per definition är per tid eller Unix-tidsperiod den 1 januari 1970. Det representeras som 00:00:00 UTC. Utgången på din terminal har detta format för att representera modifieringsdatum som är associerade med de listade filerna och katalogerna. '% T'-delen av argumentet tar nu tidsperioden för att visa den senaste modifieringsstämpeln som är associerad med de listade filerna och katalogerna.

Beroende på din Linux-distro eller smak kanske terminalutgången inte visar den tid som är associerad med utgångslistan med modifierade filer. Detta uttalande är ett bevis på resultatet från mitt slut.

'% P'-delen av argumentet matar ut namnen på de visade filerna i den aktuella arbetskatalogen. Slutligen tjänar '/ n'-delen av argumentet syftet med en nylinjetecken. Efter varje efterföljande lista av en modifierad fil tar denna nya linjetecken visningspekaren och hoppar över nästa filvisning till en ny rad på terminalskärmen. Det gör det lättare för oss att associera varje visad fil på olika sätt.

Ett annat tillvägagångssätt för att arbeta med den tidigare angivna kommandosträngen är att ersätta '% t' -delen av argumentet "% T @% t% p \ n" med "% c". Den resulterande kommandosträngen ska se ut som följande:

$ hitta . -printf '% T @% c% p \ n' | sortera -k 1 -n | klipp -d "-f2-

Utgången från att köra denna kommandosträng bör producera en utdata som liknar följande skärmdump.

ändra argument på kommandot för sökfil rekursivt

Observera ovanstående skärmdump avslöjar noggrant följande observation. Utmatningslistan över filer i den aktuella arbetskatalogen visas med en "senaste statusändringstid" istället för "modifieringstid". Det är effekten av att ersätta '% c' med '% t' i "% T @% t% p \ n". Detta sista kommando skriver ut behörighetsändringar som är associerade med den utmatade fillistan. Filernas innehåll ändras kanske inte, men metadata som är associerade med dem ändras.

I detta skede följer inte resultatresultaten någon kronologisk ordning eftersom vi ännu inte tar itu med sorteringskommandot. Ändringsstämpeln skrivs ut först, följt av namnet på den associerade filen.

Sortera

Detta kommandoargument har tre parametrar, nämligen '-k', '1' och 'n'. Sorteringskommandot är ansvarigt för den ordning som fillistans utdata visas på våra skärmar. I det här fallet skrivs modifieringsdatumet först, följt av filsökvägen till den modifierade filen eller katalogen. '-K' -delen av detta kommandoargument indikerar startpositionen för att börja sorteringsprocessen.

'-K' -delen av sort-kommandoargumentet har en fråga som besvaras med '1'-delen av samma argument. I det här fallet börjar sorteringsprocessen från den första kolumnen som indikeras av '1'. Argumentet för sorteringskommando är också ansvarigt för att den senaste modifierade filen är längst ner i listan och den äldsta överst. Argumentets '-n'-del är ansvarig för tidssiffran med decimalpunktens precision.

Om du använder '-nr' istället för '-n' kommer kommandosträngens utdata att ha de nyligen modifierade filerna och katalogerna ovanpå terminalutgången och gamla filändringar längst ner. Det omvandlar sorteringsordningen för terminalutgången.

Skära

Huvudsyftet med "klipp" -kommandoargumentet är att ordna utdata från vår terminalutskrift på ett snyggt sätt. Alternativet '-d' och "i detta kommandogargument kombinerar för att skapa vita blanksteg och sedan klippa ut filinnehållsdetaljerna som kan försöka lyckas med dessa vita mellanslag.

Med den här enkla kommandosträngen kan du rekursivt skriva ut filerna i din nuvarande arbetskatalog, där varje utgång länkar nämnda filer till deras modifieringsdatum.

Alternativa kommandoalternativ

Du kan hävda att kommandot "ls -lrt" listar perfekt alla filer i en aktiv katalogsökväg på ditt Linux-operativsystem, från den äldsta till modifiering till den nyaste. Å andra sidan beaktar inte detta kommando filinnehållet som finns i undermappar. Om listning av underkataloger inte är ditt mål kan du lägga till argumentet “-type f” i kommandosträngen. Tänk på följande ändring av kommandot.

$ hitta . -typ f -printf '% T @% t% p \ n' | sortera -k 1 -n | klipp -d "-f2-

Att använda kommandot argumentet “-type d” kommer att ha en motsatt effekt av ovanstående kommando. Din terminal kommer endast att mata ut modifierade kataloger från den äldsta till den nyaste. Tänk på dess konsekvenser enligt följande:

$ hitta . -typ d -printf '% T @% t% p \ n' | sortera -k 1 -n | klipp -d "-f2-

Slutlig anmärkning

Du är nu bekant med genomgången av rekursivt utskrift av filer och kataloger i din nuvarande arbetskatalog med ytterligare kunskap om att veta när de senast ändrades baserat på deras tillhörande tidsstämplar.

Från denna kunskap har du förmågan att komponera en tidslinje med händelser som kronologiskt avslöjar ordningen på filer och katalogförändringar tillsammans med sökvägen till deras lagringsplats.

Så här installerar du League Of Legends på Ubuntu 14.04
Om du gillar League of Legends är det här en möjlighet för dig att testa League of Legends. Observera att LOL stöds på PlayOnLinux om du är en Linux-a...
Installera det senaste OpenRA-strategispelet på Ubuntu Linux
OpenRA är en Libre / Free Real Time Strategy-spelmotor som återskapar de tidiga Westwood-spelen som det klassiska Command & Conquer: Red Alert. Distri...
Installera senaste Dolphin Emulator för Gamecube & Wii på Linux
Dolphin Emulator låter dig spela dina valda Gamecube & Wii-spel på Linux Personal Computers (PC). Eftersom Dolphin Emulator är en fritt tillgänglig o...