这类似于this question,但我想在unix中包含相对于当前目录的路径 . 如果我执行以下操作:
ls -LR | grep .txt
它不包括完整路径 . 例如,我有以下目录结构:
test1/file.txt
test2/file1.txt
test2/file2.txt
上面的代码将返回:
file.txt
file1.txt
file2.txt
如何使用标准Unix命令将其包含在相对于当前目录的路径中?
这类似于this question,但我想在unix中包含相对于当前目录的路径 . 如果我执行以下操作:
ls -LR | grep .txt
它不包括完整路径 . 例如,我有以下目录结构:
test1/file.txt
test2/file1.txt
test2/file2.txt
上面的代码将返回:
file.txt
file1.txt
file2.txt
如何使用标准Unix命令将其包含在相对于当前目录的路径中?
12 回答
使用find:
在使用GNU find的系统上,与大多数GNU / Linux发行版一样,您可以省略-print .
使用
tree
,-f
(完整路径)和-i
(没有缩进行):然后,您可以使用
grep
过滤掉您想要的那些 .如果找不到该命令,则可以安装它:
键入以下命令在RHEL / CentOS和Fedora linux上安装树命令:
如果您使用的是Debian / Ubuntu,Mint Linux会在终端中输入以下命令:
试试
find
. 您可以在手册页中查找它,但它有点像这样:find [start directory] -name [what to find]
所以对你的例子
find . -name "*.txt"
应该给你你想要的东西 .
您可以使用find代替:
这样做的诀窍:
ls -R1 $PWD | while read l; do case $l in *:) d=${l%:};; "") d=;; *) echo "$d/$l";; esac; done | grep -i ".txt"
但它通过"sinning"解析了
ls
,但这被GNU和Ghostscript社区视为不良形式 .'sed'将从所有'find'结果中删除'your_path' . 并且你接受了相对于'DIR'的路径 .
要使用find命令获取所需文件的实际完整路径文件名,请将其与pwd命令一起使用:
这是一个Perl脚本:
用法:
你可以创建一个shell函数,例如在
.zshrc
或.bashrc
中:显然,第一个仅适用于单个文件 .
在文件系统上找到名为“filename”的文件,从根目录“/”开始搜索 . “文件名”
如果你想在你的输出中保留详细信息,如文件大小等,那么这应该可行 .
您可以像这样实现此功能
首先,使用ls命令指向目标目录 . 稍后使用find命令过滤掉它的结果 . 从你的情况来看,它听起来像 - 文件名始终以一个单词
file***.txt
开头