Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 查找具有特定名称的文件或目录的名称_Linux_Shell_Find_Glob - Fatal编程技术网

Linux 查找具有特定名称的文件或目录的名称

Linux 查找具有特定名称的文件或目录的名称,linux,shell,find,glob,Linux,Shell,Find,Glob,我必须在当前目录中找到文件名,这些文件中至少有2个数字,并且以非数字值结尾。 到目前为止,我已经做了: find . -maxdepth 1 -type f -name "[0-9]\{2,\}$[!0-9]" 但它不起作用。有人能帮我吗?\{2,\}是一个正则表达式,而shell和find的-name选项使用shell模式(也称为globs)。使用任何 ls *[0-9]*[0-9]*[!0-9] find . -maxdepth 1 -type f -name '*[0

我必须在当前目录中找到文件名,这些文件中至少有2个数字,并且以非数字值结尾。 到目前为止,我已经做了:

find . -maxdepth 1 -type f -name "[0-9]\{2,\}$[!0-9]"

但它不起作用。有人能帮我吗?

\{2,\}
是一个正则表达式,而shell和find的
-name
选项使用shell模式(也称为globs)。使用任何

ls *[0-9]*[0-9]*[!0-9]
find . -maxdepth 1 -type f -name '*[0-9]*[0-9]*[!0-9]'
*
表示任意数量的字符,
[0-9]
是数字,
[!0-9]
不是数字


1还请注意,在正则表达式中,
[0-9]\{2,\}
将是“至少两个连续数字”。因此它与
f1f2x
文件不匹配。而
$
将完全不合适。

虽然在这种情况下,它不起作用的原因相当明显,但请避免使用“它不起作用”,而是准确地解释它是如何失效的。但这不就是将它限制为介于两者之间的数字吗?如果我的文件以数字开头怎么办?例如,如果我有一个文件名2file44a,那么您提供的glob表达式是否有效?@kittycudles您是否尝试过创建这样一个文件并对其进行测试?是的,它会工作,因为
*
匹配任何字符串,包括空字符串。请参见
man glob