当前位置:  开发笔记 > 运维 > 正文

在Linux CLI中以递归方式列出文件,其中包含相对于当前目录的路径

如何解决《在LinuxCLI中以递归方式列出文件,其中包含相对于当前目录的路径》经验,为你挑选了5个好方法。

这与此问题类似,但我想在unix中包含相对于当前目录的路径.如果我执行以下操作:

ls -LR | grep .txt

它不包括完整路径.例如,我有以下目录结构:

test1/file.txt
test2/file1.txt
test2/file2.txt

上面的代码将返回:

file.txt
file1.txt
file2.txt

如何使用标准Unix命令将其包含在相对于当前目录的路径中?



1> Andru Luvisi..:

使用find:

find . -name \*.txt -print

在使用GNU find的系统上,与大多数GNU/Linux发行版一样,您可以省略-print.


......就此而言,你可以省略'.'
使用`-type f`只返回文件而不是目录,符号链接等.
对于绝对路径,请使用`find $(pwd)-name\*.txt`
如果pattern包含目录名的一部分,则应使用-path“ * docs / *。txt”`,而不要使用-name。-wholename与-path相同
-name“ * .txt”`不会**匹配`file.TXT` —始终使用-iname“ * .txt”`而不区分大小写。

2> 小智..:

使用tree,带-f(完整路径)和-i(没有缩进线):

tree -if --noreport .
tree -if --noreport directory/

然后,您可以使用grep过滤掉您想要的那些.


如果找不到该命令,则可以安装它:

键入以下命令在RHEL/CentOS和Fedora linux上安装树命令:

# yum install tree -y

如果您使用的是Debian/Ubuntu,Mint Linux会在终端中输入以下命令:

$ sudo apt-get install tree -y



3> Jonathan Ade..:

试试find.您可以在手册页中查找它,但它有点像这样:

find [start directory] -name [what to find]

所以对你的例子

find . -name "*.txt"

应该给你你想要的东西.



4> Sherm Pendle..:

您可以使用find代替:

find . -name '*.txt'



5> 小智..:

这样做的诀窍:

ls -R1 $PWD | while read l; do case $l in *:) d=${l%:};; "") d=;; *) echo "$d/$l";; esac; done | grep -i ".txt"

但是,它通过解析"犯罪"来做到这一点ls,但是,这被GNU和Ghostscript社区认为是不好的形式.


@CAFEBABE:它被认为是禁忌来解析`ls'的结果,因为它通常会导致错误.有问题的句子试图说出来.它还有一个笑话,我已经删除了.
推荐阅读
手机用户2402851335
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有