Suchen Sie nach Dateien, die mit der Nummer enden


10

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 secureDatei in /var/log/) und das Entfernen des Inhalts aus dieser Datei. Aber es gibt einige Dateien mit dem Namen : secure.1, secure.2und all das zähle ich gerne, und wenn die Anzahl größer ist, dann 2archiviere 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, 1da 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.


1
Haben Sie vergessen, den Platzhalter zu zitieren? find /var/log/ -name '*.1' ...
Muru

1
Ich denke, Sie sollten logrotatenach Ihrem Zweck suchen.
Costas

Antworten:


15

Mit einfach -name:

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

oder für eine beliebige Ziffer:

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

oder wenn andere Zeichen nach der Ziffer möglich sind:

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

3

Die Dateinamen zu finden, die mit einer Zahl enden, reicht von .[1 bis 5].

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

1

Warum nicht einfach ...

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

Sie brauchen nicht, findsoweit 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, kann finddies von Vorteil sein - das Gehen von Bäumen in der Shell kann Kopfschmerzen verursachen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.