解决find: paths must precede expression

https://blog.slogra.com/post-600.html

今天在服务器上执行find ./ -mtime +30 -type f -name .php的时候,报下面的错误:
find: paths must precede expression
Usage: find [-H] [-L] [-P] [path...] [expression]
然后就上网查了一下,结果搜索到一篇,大概是这样说的:多文件的查找的时候需要增加单引号,一直是使用的双引号,没想到找多文件的时候居然要单引号.好吧,又学了一招,修改后:
find ./ -mtime +30 -type f -name '
.php'
这样执行后就没有再报错了,一个小问题得到解决.
例子说明:

进入tmp目录新建4个文本文件

cd /tmp

touch {1,2,3,4}.txt

find . -name *.txt

find: paths must precede expression: 2.txt

出现这个提示是因为星号被展开为当前目录下所有的文件,这样的匹配当然会出错。看这个就知道了:

echo *

1.txt 2.txt 3.txt 4.txt

echo '*'

echo *

想要星号不被展开就需要加上括号或者反斜杠转义,知道了这些我们就知道该怎么find了

find . -name '*.txt'

find . -name '*.txt'
./4.txt
./2.txt
./3.txt
./1.txt

或者使用反斜杠

find . -name *.txt
./4.txt
./2.txt
./3.txt
./1.txt

好了,就这样吧.

推荐阅读更多精彩内容

  • .bat脚本基本命令语法 目录 批处理的常见命令(未列举的命令还比较多,请查阅帮助信息) 1、REM 和 :: 2...
    庆庆庆庆庆阅读 2,742评论 1 14
  • 个人学习批处理的初衷来源于实际工作;在某个迭代版本有个BS(安卓手游模拟器)大需求,从而在测试过程中就重复涉及到...
    Luckykailiu阅读 1,955评论 0 6
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 76,048评论 12 117
  • Linux下find命令在目录结构中搜索文件,并执行指定的操作。Linux下find命令提供了相当多的查找条件,功...
    依忆依意壹懿阅读 233评论 0 1
  • 一、基础语法: 1.批处理文件是一个“.bat”结尾的文本文件,这个文件的每一行都是一条DOS命令。可以使用任何文...
    蒋_Sir阅读 3,553评论 0 3