解决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...
    庆庆庆庆庆阅读 5,791评论 1 16
  • 个人学习批处理的初衷来源于实际工作;在某个迭代版本有个BS(安卓手游模拟器)大需求,从而在测试过程中就重复涉及到...
    Luckykailiu阅读 3,284评论 0 11
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 116,935评论 15 132
  • 一、基础语法: 1.批处理文件是一个“.bat”结尾的文本文件,这个文件的每一行都是一条DOS命令。可以使用任何文...
    蒋_Sir阅读 7,717评论 1 4
  • 穷查理宝典 60分钟 482-491页,继续学习,速度有点慢,自己都捉急 学习经典,被经典的价格惊艳,被经典的智慧震撼
    GeneLong阅读 42评论 0 0