Suchen Sie nach Dateien, die mit einer Zahl enden

Suchen Sie nach Dateien, die mit einer Zahl enden

Ich versuche, ein Backup-Skript zu erstellen, da die Protokolldateien immer größer werden. Ich kopiere die aktuelle Datei (z. B. secureDatei in /var/log/) und entferne den Inhalt aus dieser Datei. Aber es gibt einige Dateien mit Namen wie: secure.1, secure.2und all diese möchte ich zählen und wenn die Zahl größer ist, 2sie alle archivieren. Ich kann die Methode zum Suchen oder Zählen dieser Dateien nicht finden. Das Erste, was 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 zählen wie in einer For-Schleife, wo ich einen Zahlenbereich angeben kann, wie {1..5}oder ähnlich. Gibt es eine Möglichkeit, diese Dateien zu trennen und zu einer einzigen zu machen und sie dann zu sichern oder zu löschen oder was auch immer ... oder vor allem, wie kann ich all diese Zahlen finden, die am Ende eine Nummer ergeben.

Antwort1

Mit einfachen -name:

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

oder für jede Ziffer:

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

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

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

Antwort2

So finden Sie Dateinamen, die mit einer Zahl im Bereich von .[1 bis 5] enden.

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

Antwort3

Warum nicht einfach...

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

findSoweit ich weiß, brauchen Sie das nicht – die Shell verwendet dieselben Globs wie in -name. Und wenn sich alle Dateien in einem einzigen Verzeichnis befinden … Natürlich findkönnte es von Vorteil sein, wenn es auch Unterverzeichnisse gibt, die Sie interessieren – das Durchforsten von Bäumen in der Shell kann Kopfschmerzen bereiten.

verwandte Informationen