OSX系统下如何查找名称含(1)的文件?多种find命令变体尝试未果
解决find命令查找带括号文件名的问题
嘿,我太懂这种被特殊字符文件名坑到的感觉了!你要找product (1).php这类带空格和括号的文件,关键在于括号()和空格都是shell里的特殊元字符,直接输入会被shell提前解析,导致find收到的不是你真正要找的文件名。下面给你几种靠谱的解决办法:
精准匹配单个文件:用单引号包裹文件名
单引号会完全屏蔽shell的元字符解析,把文件名原封不动传给find,这是最省心的方式:find /你要搜索的路径 -name 'product (1).php'如果是当前目录搜索,把路径换成
.就行:find . -name 'product (1).php'批量匹配同类型文件:用通配符+单引号
要是想找所有类似product (2).php、product (100).php这类文件,直接把括号里的数字换成通配符*,同样用单引号包裹:find /搜索路径 -name 'product (*).php'这里的
*会被find当成通配符,匹配括号里的任意内容,完美覆盖所有带编号的这类文件。不用引号的备选:转义每个特殊字符
如果你不想用引号,就得给每个特殊字符(空格、左括号、右括号)加上反斜杠\来转义,告诉shell这些是普通字符:find /搜索路径 -name product\ \(1\).php这种方式虽然能生效,但容易漏转义,尤其是文件名复杂的时候,不如单引号来得稳妥。
小提示
find默认是递归搜索子目录的,如果只想搜索当前目录不深入子目录,可以加上-maxdepth 1参数:
find . -maxdepth 1 -name 'product (*).php'
内容的提问来源于stack exchange,提问作者Scott C Wilson
相关产品推荐
相关产品推荐

