Ich versuche, ein Backup-Skript zu erstellen, da die Protokolldateien immer größer werden. Was ich habe, ist das Kopieren der aktuellen Datei (zum Beispiel secure
Datei in /var/log/
) und das Entfernen des Inhalts aus dieser Datei. Aber es gibt einige Dateien mit dem Namen : secure.1
, secure.2
und all das zähle ich gerne, und wenn die Anzahl größer ist, dann 2
archiviere ich sie alle. Ich kann die Methode zum Auffinden oder Zählen dieser Dateien nicht finden. Der erste Gedanke, der mir einfiel, war:
find /var/log/ -name *.1 | wc -l
und dies wird immer gedruckt, 1
da es eine Datei gibt secure.1
. Wie kann ich wie in for-Schleife zählen, wo ich einen Bereich von Zahlen wie {1..5}
oder ähnlich angeben kann? Gibt es eine Möglichkeit, diese Dateien zu trennen und als eine zu erstellen und sie zu sichern oder zu löschen oder was auch immer ... oder zuallererst, wie kann ich all diese Nummern finden, die mit einer Nummer enden.
find /var/log/ -name '*.1' ...
logrotate
nach Ihrem Zweck suchen.Antworten:
Mit einfach
-name
:oder für eine beliebige Ziffer:
oder wenn andere Zeichen nach der Ziffer möglich sind:
quelle
Die Dateinamen zu finden, die mit einer Zahl enden, reicht von
.
[1 bis 5].quelle
Warum nicht einfach ...
Sie brauchen nicht,
find
soweit ich das beurteilen kann - die Shell verwendet die gleichen Globs wie in-name
. Und wenn sich alle Dateien in einem einzigen Verzeichnis befinden ... Wenn es natürlich auch Unterverzeichnisse gibt, an denen Sie interessiert sind, kannfind
dies von Vorteil sein - das Gehen von Bäumen in der Shell kann Kopfschmerzen verursachen.quelle