V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
sleepingdog
V2EX  ›  正则表达式

正则表达式 locate --regex 'bin/(bz|gz|zip)'有没语法问题?

  •  
  •   sleepingdog · 193 天前 · 491 次点击
    这是一个创建于 193 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我在 ubuntu 上使用 locate --regex 'bin/(bz|gz|zip)' 结果什么输出都没有。
    我用 find 搜索,明明都存在/usr/bin/zip 。
    18 条回复    2023-10-18 20:05:00 +08:00
    sleepingdog
        1
    sleepingdog  
    OP
       193 天前
    是复制粘体《 linux 命令行大全》书上的
    locate --regex 'bin/(bz|gz|zip)'
    这是中文 2012 版



    这是英文 2019 版

    因为中文版( 2012 )有一些地方错误,而英文版似乎作者也有一些地方有问题,不敢肯定所以问问这个先
    sleepingdog
        2
    sleepingdog  
    OP
       193 天前

    这本书。不知道有没人看过,我感觉还是不错的,瑕不掩瑜。


    这是我 ubuntu find 找到的
    NEO17
        3
    NEO17  
       193 天前
    看着没错。Ubuntu 版本是? locate 版本? updatedb 试下
    sleepingdog
        4
    sleepingdog  
    OP
       193 天前
    @NEO17 #3 忘了说了,
    ubuntu 是 2204lts ,locate 版本是


    奇怪我在树莓派上执行这个命令也没有出现内容。树莓派上也是有那个
    /usr/bin/zip 的
    两个 locate 都是那个 4.8.0
    sleepingdog
        5
    sleepingdog  
    OP
       193 天前
    直接用 locate bin/zip ,它是能出来的,所以应该是哪里出了问题
    zhuisui
        6
    zhuisui  
       193 天前
    我原样复制你的,能找到。语法也没问题。
    你确定你用的是你贴的命令,而不是 --regexp ?另外你用了 updatedb 更新过数据库?
    sleepingdog
        7
    sleepingdog  
    OP
       193 天前
    @zhuisui #6
    然后也 sudo updatedb 过了。
    这是虚拟机的 ubuntu 系统,zip 也都装了好几天了,应该不是这个问题。

    关键我在树莓派上也是这个结果,真是蚌埠住了。树莓派是树莓派的 os ,发现没有 locate ,手动 apt 安装了
    sleepingdog
        8
    sleepingdog  
    OP
       193 天前
    手动输入也不行。试了 n 次
    sleepingdog
        9
    sleepingdog  
    OP
       193 天前


    奇怪。。
    JinTianYi456
        10
    JinTianYi456  
       193 天前
    不明所以

    > updatedb
    > locate --regex 'bin/(bz|gz|tar)'
    /bin/gzip
    /bin/tar
    /usr/bin/bzcat
    /usr/bin/bzip2
    > locate bin/tar
    /bin/tar
    julyclyde
        11
    julyclyde  
       192 天前
    @sleepingdog 那你 strace locate 看看它到底都做了些啥?
    sleepingdog
        12
    sleepingdog  
    OP
       192 天前
    @JinTianYi456 #10
    update 是不是一般都要加 sudo ?
    不过我即使加了,前面也弹出这个东西


    我去到该位置,发现权限是这样。

    但感觉这两个文件应该和上述的应该没有关系吧



    回到问题,又试了下也还是这样。locate --regex '/bin/zip' ,倒是可以出来结果
    sleepingdog
        13
    sleepingdog  
    OP
       192 天前
    @Livid 我 10 楼的最后一张图片包含了用户信息,能帮我删除该图片么
    sleepingdog
        14
    sleepingdog  
    OP
       192 天前

    树莓派也是这样。
    奇怪你们为什么就能输出正常的结果
    sleepingdog
        15
    sleepingdog  
    OP
       192 天前
    @julyclyde #11 因为没用过 strace ,不知 strace locate --regex '/bin/(bz|gz|zip)'这样对不对?

    它显示的东西太多了只截取前部分和后部,中间基本都是 read(3,.....之类的内容

    ~/workspaces/cat$ strace locate --regex '/bin/(bz|gz|zip)'
    execve("/usr/bin/locate", ["locate", "--regex", "/bin/(bz|gz|zip)"], 0x7ffd16805b50 /* 53 vars */) = 0
    brk(NULL) = 0x5643604f8000
    arch_prctl(0x3001 /* ARCH_??? */, 0x7ffe61c87470) = -1 EINVAL (无效的参数)
    mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fbfa3762000
    access("/etc/ld.so.preload", R_OK) = -1 ENOENT (没有那个文件或目录)
    openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
    newfstatat(3, "", {st_mode=S_IFREG|0644, st_size=73967, ...}, AT_EMPTY_PATH) = 0
    mmap(NULL, 73967, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fbfa374f000
    close(3) = 0
    openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
    read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0P\237\2\0\0\0\0\0"..., 832) = 832
    pread64(3, "\6\0\0\0\4\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0"..., 784, 64) = 784
    pread64(3, "\4\0\0\0 \0\0\0\5\0\0\0GNU\0\2\0\0\300\4\0\0\0\3\0\0\0\0\0\0\0"..., 48, 848) = 48
    pread64(3, "\4\0\0\0\24\0\0\0\3\0\0\0GNU\0\244;\374\204(\337f#\315I\214\234\f\256\271\32"..., 68, 896) = 68
    newfstatat(3, "", {st_mode=S_IFREG|0755, st_size=2216304, ...}, AT_EMPTY_PATH) = 0
    pread64(3, "\6\0\0\0\4\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0"..., 784, 64) = 784
    mmap(NULL, 2260560, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fbfa3400000

    ......

    read(3, "0000cf67-0006076eea03b003.journa"..., 4096) = 4096
    read(3, "e-le64.cache-7\0\0d677cdf-5295-4fc"..., 4096) = 4096
    read(3, "le64.cache-7\0\377101a04ab-0cd4-493e"..., 4096) = 3493
    read(3, "", 4096) = 0
    close(3) = 0
    close(1) = 0
    close(2) = 0
    exit_group(1) = ?
    +++ exited with 1 +++
    sleepingdog
        16
    sleepingdog  
    OP
       192 天前
    两个系统的语言都是这个,

    不知有没关系
    julyclyde
        17
    julyclyde  
       192 天前
    @sleepingdog updatedb 必须用 root 身份运行,否则无权限看所有的文件,没权限写 locate.db
    julyclyde
        18
    julyclyde  
       192 天前
    @sleepingdog strace 的输出很长的。慢慢读吧
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1033 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 18:45 · PVG 02:45 · LAX 11:45 · JFK 14:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.