Trova i file che terminano con il numero


10

Sto cercando di creare alcuni script di backup man mano che i file di registro diventano sempre più grandi. Quello che ho è copiare il file corrente, (ad esempio il securefile in /var/log/) e rimuovere il contenuto da quel file. Ma ci sono alcuni file con il nome come: secure.1, secure.2e tutto questo mi piace di contarli, e se il numero è più grande quindi 2di archiviare tutti. Non riesco a trovare il metodo per trovare questi file o contarli. La prima cosa che mi è venuta in mente è stata:

find /var/log/ -name *.1 | wc -l

e questo verrà sempre stampato 1poiché esiste un solo file secure.1. Come posso contare come in for loop dove posso specificare un intervallo di numeri simili {1..5}o simili. C'è un modo per separare questi file e renderli come uno e loro backup o eliminazione o cosa mai ... o prima di tutto come posso trovare tutti questi numeri che finiscono con il numero.


1
Hai dimenticato di citare il carattere jolly? find /var/log/ -name '*.1' ...
muru,

1
Penso che dovresti verificare il logrotatetuo scopo.
Costas,

Risposte:


15

Con semplice -name:

find /var/log -name '*.[2-9]'

o per qualsiasi cifra:

find /var/log -name '*.[[:digit:]]'

o se sono possibili altri caratteri dopo la cifra:

find /var/log -name '*.[2-9]*'

come trovare quelli che contengono SOLO cifre nel loro nome?
letthefireflieslive

3

Per trovare i nomi di file che termina con un numero varia da .[1 a 5].

find /var/log/ -type f -regextype sed -regex ".*\.[1-5]$"

1

Perché non solo ...

for log in /var/log/*.[1-5]
do whatever to "$log"
done

Non è necessario findper quanto posso dire - la shell utilizza gli stessi globs in cui si trova -name. E se tutti i file si trovano in una singola directory ... Naturalmente, se ci sono sottodirectory che ti interessano, findpotrebbe essere utile: camminare sugli alberi nella shell può essere un mal di testa.

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.