Rechercher les fichiers se terminant par un nombre

10

J'essaie de créer un script de sauvegarde à mesure que les fichiers journaux deviennent de plus en plus gros. Ce que j'ai, c'est de copier le fichier actuel (par exemple, securefichier dans /var/log/) et de supprimer le contenu de ce fichier. Mais il y a des fichiers avec le nom comme: secure.1, secure.2et tout cela , je tiens à les compter, et si le nombre est plus grand que 2pour les archiver tous. Je ne trouve pas la méthode pour trouver ces fichiers ou les compter. La première pensée qui m'est venue a été:

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

et cela s'imprimera toujours 1car il n'y a qu'un seul fichier secure.1. Comment puis-je compter comme dans la boucle où je peux spécifier une plage de nombres comme {1..5}ou similaire. Existe-t-il un moyen de séparer ces fichiers et de les faire comme un seul et de les sauvegarder ou de les supprimer ou quoi que ce soit ... ou tout d'abord comment puis-je trouver tous ces numéros qui se terminent par un numéro.

user3523605
la source
1
Avez-vous oublié de citer le caractère générique? find /var/log/ -name '*.1' ...
muru
1
Je pense que vous devriez vérifier logrotatevotre objectif.
Costas

Réponses:

15

Avec simple -name:

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

ou pour n'importe quel chiffre:

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

ou si d'autres caractères sont possibles après le chiffre:

find /var/log -name '*.[2-9]*'
jimmij
la source
comment trouver ceux qui ne contiennent que des chiffres dans leur nom?
letthefireflieslive
3

Pour trouver les noms de fichiers qui se terminent par un nombre compris entre .[1 et 5].

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

Pourquoi pas seulement ...

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

Pour findautant que je sache, vous n'avez pas besoin - le shell utilise les mêmes globes que dans -name. Et si tous les fichiers sont dans un seul répertoire ... Bien sûr, s'il y a des sous-répertoires qui vous intéressent également, cela findpourrait être bénéfique - marcher dans le shell peut être un casse-tête.

mikeserv
la source