搜索文件并打印其完整路径

搜索文件并打印其完整路径

ls -R /media/X | grep filename让我搜索文件名,但它只打印文件名,而不打印其所在的目录。我怎样才能打印文件名它的目录?

答案1

您可以使用命令find为了这些目的。

尝试

find /media/X | grep filename

没有的话你也可以达到同样的结果grep(正如@geekosaur 指出的那样),但是find如果你已经习惯了的话, 的语法可能会很麻烦grep

答案2

ls并且grep并不是真正合适的工具;您需要命令find

find /media/X -name '*filename*'

这也可以让您按年龄等条件查找。

答案3

目前接受的 @Dennis 的答案如果有大量文件,将会消耗大量的 CPU 和/或 IO,/media/X因为寻找将递归列出一切除非使用某些限制标志,否则在定义的路径下。在一般情况下,这可能无关紧要,但深度递归后再 grep 过长的列表肯定不是最佳选择。

您通常会使用定位命令(例如来自移动定位包)。 例如:

$ locate virtualbox/README.Debian
/usr/share/doc/virtualbox/README.Debian.gz
/usr/share/doc/virtualbox/README.Debian.html

这种方法的主要限制在于各种定位软件包通常不会索引 ecryptfs 下的私有主目录,这可能是 Ubuntu 用户的一个担忧。由于 OP 使用的是 Ubuntu,我建议使用定位对于系统文件,以及寻找对于存储在 ecryptfs 挂载中的任何内容,有一些合理的限制标志。

最后,值得一提的是,使用寻找如果没有绝对路径作为起点,可能无论如何都无法实现 OP 想要的结果。最初的问题是如何返回文件名及其路径,因此,除非可以接受相对路径,定位更有可能返回正确的结果。

相关内容