Elimina i file in base all'anno da SSH


1

Sono in una sessione di stucco e vorrei eliminare i file da una directory che sono stati creati nel 2009.

Per favore, potresti darmi il comando esatto?

Risposte:


2

Prima di tutto, il fatto che stai usando ssh non ha importanza. Ciò che conta è la "shell" che ti è stata presentata e quali strumenti hai a disposizione. Presumo che tu sia in "Bash" e abbia "trova" disponibile.

Suppongo anche che per "creato nell'anno 2009" intendi "più vecchio del 2010" in quanto mi rende più facile ... se non lo fai, guarda oltre l'interruzione!

Prova find:

find /path/to/directory/ -ctime +567 -delete

Quanto sopra cancellerà qualcosa di più di 567 giorni (all'incirca al 2009 alla data di questo post)

Invece di -deletete "potresti" usare -printprima. Quando sei sicuro che stia stampando solo ciò che vuoi eliminare, quindi usa -delete.


Se non desideri eliminare elementi dal 2008, puoi "fare" quanto segue:

find /path/to/directory/ -ctime +567 -ctime -932 -delete

Quei numeri probabilmente non sono corretti, puoi perfezionarlo.


Sezioni rilevanti dell'uomo trovano :

   -ctime n
      File's status was last changed n*24 hours ago.  See the comments
      for -atime to understand how rounding affects the interpretation
      of file status change times.


   Numeric arguments can be specified as

   +n     for greater than n,

   -n     for less than n,

   n      for exactly n.

1
Puoi semplicemente combinare le due opzioni di data come in 'trova / percorso / to / files -ctime +567 -ctime -932 -delete'. Le opzioni -ctime da trovare e logicamente ed-ed, mentre -932 fa riferimento a una data di meno di 932 giorni nel passato.
Jaap Eldering,

Bah che mi è venuto in mente, ma sembrava troppo ragionevole per essere vero, quindi l'ho ignorato. Modificherò la mia risposta!
PriceChild

1
c'è un errore nel comando find modificato: il secondo argomento ctime dovrebbe avere un segno meno (-932) per indicare più di 932 giorni invece che più vecchi.
Jaap Eldering,

Bah sì, è vero. Era anche sbagliato nell'originale>. <
PriceChild

1

Suppongo che tu stia usando PuTTY per connetterti a qualche computer che esegue una distribuzione di Linux usando SSH. Sfortunatamente, la maggior parte delle distribuzioni Linux non registra la data di creazione di un file. Puoi scoprire solo quando un file è stato modificato l'ultima volta e quando è stato effettuato l'ultimo accesso.

Se vuoi trovare tutti i file nella directory corrente che sono stati modificati l'ultima volta nel 2009, usa questo comando:

find * \( ! -newermt '2010-01-01' \) -newermt '2008-12-31 23:59' -type f

Se vuoi cercare anche le sottodirectory, modifica *in .e rimuovi in ​​questo -type fmodo:

find . \( ! -newermt '2010-01-01' \) -newermt '2008-12-31 23:59'

I due comandi precedenti stamperanno solo i nomi dei file. Se sei sicuro di voler eliminare i file, aggiungi -deletealla fine:

find * \( ! -newermt '2010-01-01' \) -newermt '2008-12-31 23:59' -type f -delete

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.