有时我想运行某些文件,但我不想一直导航到文件夹。
如果我知道文件名并且find -name file_name.py只返回一个结果,我可以使用它吗?
例如,不是一直导航到特定文件夹并调用:
python file_name.py
Run Code Online (Sandbox Code Playgroud)
我可以写:
python [ find -name file_name.py ]
Run Code Online (Sandbox Code Playgroud)
或者
python [ locate file_name.py ]
Run Code Online (Sandbox Code Playgroud)
或者某种“在我的整个计算机中搜索此文件名并使用它”的变体?最好在一行。
我已经写了:
locate Origin90SR2DVD.iso
Run Code Online (Sandbox Code Playgroud)
我收到了该文件所在的路径:
/home/david/Origin90SR2DVD.iso
Run Code Online (Sandbox Code Playgroud)
然后我写了:
cd /home/david
Run Code Online (Sandbox Code Playgroud)
我跑了:
ls -lrth
Run Code Online (Sandbox Code Playgroud)
我找不到Origin90SR2DVD.iso文件。
为什么文件不在该路径中?
在手册页上locate,我读到了这个:
locate --basename
Match only the base name against the specified patterns.
This is the opposite of --wholename.
Run Code Online (Sandbox Code Playgroud)
但我不明白。这是什么意思?locate --basename和 和有locate --wholename什么区别?你能给我一些简单的例子吗?
Ubuntu 上的whereis,locate和find命令之间有什么区别?从搜索的角度来看,它们的基本区别是什么?
我正在寻找一个轻量级的解决方案来帮助用户在我的服务器上查找文件。
在命令行上运行我可以只使用 locate,如有必要,使用 grep 命令进行管道传输。然而,用户无权访问提示,也不知道使用更复杂的管道命令。
我一直在尝试使用一些搜索引擎,如 solr 和 opensearch,但是这些对具有大量数据的全高清资源的要求很高,而大多数情况下,简单的名称搜索就足够了。
有谁知道可以使用现有的定位的 web gui 吗?
或者另一种方法,如轻量级搜索引擎,设置工作量低,资源需求有限,使用中央搜索数据库并为不同平台提供 gui?
我一直在阅读有关 locate 命令的信息,我使用的教程说 /var/log/updatedb 是 updatedb 所在的位置。它在 ubuntu (xubuntu) 上不存在,而且原则上它甚至似乎无法定位(具有讽刺意味的是)。这就是我为尝试找到它所做的:
[HOST]:~$ sudo find / -name updatedb
[sudo] password for [USERNAME]:
find: ‘/run/user/1000/gvfs’: Permission denied
/etc/alternatives/updatedb
/usr/bin/updatedb
Run Code Online (Sandbox Code Playgroud)
如果我查看 /usr/bin 和 long-list updatedb,它会链接到 /etc/alternatives/updatedb。
如果我查看 /etc/alternatives
[HOST]:/usr/bin$ cd /etc/alternatives
[HOST]:/etc/alternatives$ ls -l updatedb
lrwxrwxrwx 1 root root 25 Jul 15 02:35 updatedb -> /usr/bin/updatedb.mlocate
Run Code Online (Sandbox Code Playgroud)
你得到了上面指向 /usr/bin/updatedb.mlocate 的符号链接
[HOST]:/usr/bin$ ls -l updatedb.mlocate
-rwxr-xr-x 1 root root 43768 Nov 18 2014 updatedb.mlocate
[HOST]:/usr/bin$ file updatedb.mlocate
updatedb.mlocate: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), …Run Code Online (Sandbox Code Playgroud) 我有一个 16.04 安装设置,我的下载文件夹指向一个辅助硬盘驱动器(显示Downloads -> /mnt/data/Downloads)。当我运行locate搜索文件时,它没有显示此驱动器上的任何文件。我已经运行了一个sudo updatedb并检查了我的updatedb.conf(没有看到/mnt我正在寻找的目录或文件除外)
对我来说有趣的是,当我cd /mnt/data/Downloads运行locate 时,我可以看到此目录中的所有内容,但无法看到主驱动器上的所有内容。这几乎就像 Ubuntu 有两个不同的定位数据库,具体取决于我所在的驱动器。
我该如何补救这种情况?
补充:这是我的updatedb.conf
PRUNE_BIND_MOUNTS="yes"
# PRUNENAMES=".git .bzr .hg .svn"
PRUNEPATHS="/tmp /var/spool /media /home/.ecryptfs /var/lib/schroot"
PRUNEFS="NFS nfs nfs4 rpc_pipefs afs binfmt_misc proc smbfs autofs iso9660 ncpfs coda devpts ftpfs devfs mfs shfs sysfs cifs lustre tmpfs usbfs udf fuse.glusterfs fuse.sshfs curlftpfs ecryptfs fusesmb devtmpfs"
Run Code Online (Sandbox Code Playgroud)
我试过跑步sudo locate,但结果并没有改变。我试过跑步mlocate,sudo mlocate结果也没有改变。
我也尝试找到另一个updatedb.conf …
我试图找到一个我知道名称但不知道位置的隐藏文件。名字叫“message”,我也试过了sudo locate *message*,但没找到。我的输出太多,而且我不认为locate 显示隐藏文件。有任何想法吗?
我正在使用 Ubuntu 20.04 LTS。今天突然,我的Downloads文件夹不见了。谷歌搜索问题后,我曾经mkdir创建一个新Downloads文件夹。它已成功创建,但其中的文件丢失了。
当我运行时:
locate Downloads
Run Code Online (Sandbox Code Playgroud)
在终端中,所有丢失的文件都列在那里,但是当我尝试通过终端打开它们时,它说:
no such file or directory
Run Code Online (Sandbox Code Playgroud)
我正在附上一些屏幕截图以获取更多详细信息。