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, secure
fichier dans /var/log/
) et de supprimer le contenu de ce fichier. Mais il y a des fichiers avec le nom comme: secure.1
, secure.2
et tout cela , je tiens à les compter, et si le nombre est plus grand que 2
pour 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 1
car 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.
find /var/log/ -name '*.1' ...
logrotate
votre objectif.Réponses:
Avec simple
-name
:ou pour n'importe quel chiffre:
ou si d'autres caractères sont possibles après le chiffre:
la source
Pour trouver les noms de fichiers qui se terminent par un nombre compris entre
.
[1 et 5].la source
Pourquoi pas seulement ...
Pour
find
autant 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, celafind
pourrait être bénéfique - marcher dans le shell peut être un casse-tête.la source