我怎样才能让ls吐出一个递归的每行路径的平面列表?
例如,我只想要一个包含完整路径的文件列表:
/home/dreftymac/.
/home/dreftymac/foo.txt
/home/dreftymac/bar.txt
/home/dreftymac/stackoverflow
/home/dreftymac/stackoverflow/alpha.txt
/home/dreftymac/stackoverflow/bravo.txt
/home/dreftymac/stackoverflow/charlie.txt
ls -a1
差不多做我需要的东西,但我不想要路径碎片,我想要完整的路径 .
23 回答
如果你真的想使用
ls
,那么使用awk格式化它的输出:使用find:
如果只需要文件(省略目录,设备等):
ls -ld $(find .)
如果要按修改时间对输出进行排序:
ls -ltd $(find .)
尝试以下更简单的方法:
最好的命令是:
tree -fi
要使用文件而不使用链接,您必须从输出中删除
>
:如果你想知道每个文件的性质,(例如只读取ASCII文件)有两个
while
:哦真的很长的答案清单 . 它帮助了很多,最后我创建了我自己寻找的东西:
列出目录及其子目录中的所有文件:
列出目录及其子目录中的所有目录:
列出目录及其子目录中的所有目录和文件:
我不知道完整路径,但您可以使用
-R
进行递归 . 或者,如果你不喜欢ls
,你可以做find *
.除了ls之外不使用外部命令:
对于某些找不到/找不到的有限设备外壳很方便 .
找/将做的伎俩
我认为最好的方法是:
(或者为了将其保存在txt文件中)
对于所有未来的人来说,最简单的方法就是:
但是,这也显示了每个文件夹中包含的内容的大小您可以使用awk仅输出文件夹名称:
编辑 - 抱歉抱歉,我的不好 . 我以为这只是需要的文件夹 . 我会留下这个以防万一将来需要它...
有了使用所有可能的ls选项的自由:
find -type f | xargs ls -1
以下是显示目录名称的部分答案 .
说明:
ls -mR *
列出以':'结尾的完整目录名,然后分别列出该目录中的文件sed -n 's/://p'
找到以冒号结尾的行,剥离冒号并打印该行通过迭代目录列表,我们也应该能够找到目录 . 还在努力 . 通过xargs获取通配符是一项挑战 .
使用以下格式运行bash命令:
将通配符添加到ls目录的末尾会强制使用完整路径 . 现在你有这个:
你可以这样做:
不幸的是,这不会打印递归目录的完整路径,因此它可能不是您正在寻找的完整解决方案 .
ls -lR
就是你要找的,或至少我是 . 干杯我看到很多答案 . 这是我的,如果你在Mac上工作,我觉得非常有用 .
我相信你知道有一些"bundle"文件(.app,.rtfd,.workflow等) . 看着Finder的窗口,他们看起来像是单个文件 . 但事实并非如此 . 并且
$ ls
或$ find
将它们视为目录......所以,除非您需要列出其内容,否则这对我有用:当然这是针对工作目录,你可以添加其他捆绑包的扩展名(但总是带有
/
) . 或者任何其他扩展,如果没有捆绑没有/
.相当有趣的是“
.lpdf/
" (multilingual pdf). It has normal ".pdf
”扩展名(!!)或Finder中没有 . 这样你得到(或者它只计算1个文件)这个pdf
而不是一堆东西......如果目录作为相对路径传递,则需要在调用find之前将其转换为绝对路径 . 在以下示例中,目录作为第一个参数传递给脚本:
这很慢,但递归工作并打印目录和文件 . 如果你只想要没有所有其他信息/目录的文件名,你可以用awk / grep管道:
@ ghostdog74:你的解决方案很少调整 .
以下代码可用于搜索具有完整绝对路径的文件 .
不要让它变得复杂 . 我刚用过这个并获得了很好的输出:
我知道文件名,但也想要目录 .
找到$ PWD | fgrep文件名
在Mac OS 10.12.1中完美运行