这与此问题类似,但我想在unix中包含相对于当前目录的路径.如果我执行以下操作:
ls -LR | grep .txt
它不包括完整路径.例如,我有以下目录结构:
test1/file.txt test2/file1.txt test2/file2.txt
上面的代码将返回:
file.txt file1.txt file2.txt
如何使用标准Unix命令将其包含在相对于当前目录的路径中?
使用find:
find . -name \*.txt -print
在使用GNU find的系统上,与大多数GNU/Linux发行版一样,您可以省略-print.
使用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
试试find
.您可以在手册页中查找它,但它有点像这样:
find [start directory] -name [what to find]
所以对你的例子
find . -name "*.txt"
应该给你你想要的东西.
您可以使用find代替:
find . -name '*.txt'
这样做的诀窍:
ls -R1 $PWD | while read l; do case $l in *:) d=${l%:};; "") d=;; *) echo "$d/$l";; esac; done | grep -i ".txt"
但是,它通过解析"犯罪"来做到这一点ls
,但是,这被GNU和Ghostscript社区认为是不好的形式.