根据文件名在 linux 文件系统上进行 RegEx 搜索
RegEx search on linux filesystem based on filenames
我尝试按照命令 find . | egrep -v '.*/[A-Z]{3}-[0-9]{8}-.'
递归搜索不在模式中的文件(不是文件夹)。这也显示文件夹!我错过了什么?
您可以直接使用 find
和 -not
选项:
find . -type f -regextype posix-egrep -not -regex '.*/[A-Z]{3}-[0-9]{8}-[^/]*$' -exec basename {} \;
使用 GNU find
,您可以使用
find . -type f -regextype posix-egrep -not -regex '.*/[A-Z]{3}-[0-9]{8}-[^/]*$' -printf "%f\n"
详情:
-type f
- return 仅文件路径
-regextype posix-egrep
将正则表达式风格设置为 POSIX ERE
-not
反转正则表达式结果
.*/[A-Z]{3}-[0-9]{8}-[^/]*$
- 匹配文件名以三个大写字母 -
、八位数字 -
开头的路径,然后可以包含 /
以外的任何文本,直到字符串的结尾
-exec basename {} \;
/ -printf "%f\n"
只打印没有文件夹的文件名(参见 Have Find print just the filenames, not full paths)
我尝试按照命令 find . | egrep -v '.*/[A-Z]{3}-[0-9]{8}-.'
递归搜索不在模式中的文件(不是文件夹)。这也显示文件夹!我错过了什么?
您可以直接使用 find
和 -not
选项:
find . -type f -regextype posix-egrep -not -regex '.*/[A-Z]{3}-[0-9]{8}-[^/]*$' -exec basename {} \;
使用 GNU find
,您可以使用
find . -type f -regextype posix-egrep -not -regex '.*/[A-Z]{3}-[0-9]{8}-[^/]*$' -printf "%f\n"
详情:
-type f
- return 仅文件路径-regextype posix-egrep
将正则表达式风格设置为 POSIX ERE-not
反转正则表达式结果.*/[A-Z]{3}-[0-9]{8}-[^/]*$
- 匹配文件名以三个大写字母-
、八位数字-
开头的路径,然后可以包含/
以外的任何文本,直到字符串的结尾-exec basename {} \;
/-printf "%f\n"
只打印没有文件夹的文件名(参见 Have Find print just the filenames, not full paths)