• ttttt
    2019-09-12
    find /etc -name pass*
    我遇到这个警告:
    find: 路径必须在表达式之前: passwd-
    用法: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]

    加个双引号""好了
    find /etc -name "pass*"
    展开
    
     3
  • 白
    2019-11-12

    您好,这个命令没有听明白
    find *txt -exec rm -v {} \;

    这里指定删除的文件,为什么要用{}
    请问{} 代表的是由find找到的内容,会被放置到{}位置中吗?

    转义这个;的作用是什么呢, ;是代表结束吗?
    展开

    作者回复: 您好,我先解释一下\; 的含义,
    1 首先不带转义的; 分号,表示分隔两条命令,如: find txt ; rm a.txt ,执行顺序就是先查找txt,查找命令结束之后,无论是否查找到文件,都执行删除 a.txt 操作,它的作用是告诉shell脚本find命令结束了,可以执行下一条命令了。
    这里使用了\; 转义了分号,是告诉shell, 它是find命令 用于 结束 -exec 这个选项的

    2 { } 如你所说,代表的就是由find找到的文件路径,假设find命令找到的是 a.txt b.txt c.txt ,这条命令会 在 -exec 选项后面组成 rm -v a.txt b.txt c.txt ; 命令,并运行。

    
    
  • 孜孜
    2019-10-03
    感觉可以把上节的*放在和+?一类?
    
    
  • 吃饭饭
    2019-09-17

    我在目录下创建文件:touch {1..9}.txt,删除的时候想使用正则命令:find . -regex '[1-9].txt' -exec rm -v {} \; 但是删除不了,后来换成了 -name 就可以了:find . -name '[1-9].txt' -exec rm -v {} \;
    不明白怎么回事,老师帮忙解答一下不

    作者回复: -regex 要匹配的是路径名称的“完整”正则表达式, 路径这里用find . 可知是 ./1.txt ;
    所以匹配的应该是find . -regex '\./[1-9]\.txt'

    
    
我们在线,来聊聊吧