können Sie find
-regex
Option verwenden, um diese Dateinamen für die Anpassung: -
find . -type f -regextype posix-extended -regex '.*ABC_20[0-9]{2}(0[1-9]|1[0-2])([0-2][0-9]|3[0-1])([0-2][0-3])([0-5][0-9])([0-5][0-9])\.sha1'
Am hierfür von find
unterstützte die -regex
Flagge mit über die -name
Flagge, die Musterabgleich einfach glob tut.
Die man
Seite von find
sagt unten für die -regex
: -
-regex pattern
File name matches regular expression pattern. This is a match
on the whole path, not a search.
-regextype name
This option controls the variety of regular expression syntax
understood by the ‘-regex’ and ‘-iregex’ tests. This option is
positional; that is, it only affects regular expressions which
occur later in the command line. If this option is not given, GNU
Emacs regular expressions are assumed.
Mehr über posix-extended
regex Typ auf diesem page
. Andere unterstützte Regex-Typen finden Sie unter here
.
Um es in Aktion zu sehen: -
$ ls ABC_2016*
ABC_20161231225950.sha1 ABC_20169231225990.sha1
$ find . -type f -regextype posix-extended -regex '.*ABC_20[0-9]{2}(0[1-9]|1[0-2])([0-2][0-9]|3[0-1])([0-2][0-3])([0-5][0-9])([0-5][0-9])\.sha1'
./ABC_20161231225950.sha1
Update: -
Wenn die regextype
in der find
Version nicht unterstützt wird, kann ein einfaches glob Konstrukt mit dem -name
Flag verwendet werden dasselbe erreichen.
$ ls ABC_2016*
ABC_20161231225950.sha1 ABC_20169231225990.sha1
$ find . -type f -name 'ABC_2[0-9][0-9][0-9][0-1][0-2][0-3][0-9][0-2][0-2][0-5][0-9][0-5][0-9].sha1'
./ABC_20161231225950.sha1
Danke Inian für das illustrative Beispiel. Aber ich muss das Finden als FTP-Befehl ausgeben. Diese Musterdateien sind auf dem FTP-Server vorhanden. Obwohl der Befehl 'find' auf dem FTP-Server funktioniert, werden die Optionen nicht erkannt. :( – user1999315
@ user1999315: Verweisen Sie mein Update für eine Lösung, die das Flag '-name' verwendet. – Inian