ls命令:我怎样才能得到一个递归的完整路径列出每个文件,一行?ls命令:我怎样才能得到一个递归的完整

2019-05-12 12:00发布

我怎样才能得到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几乎做什么,我需要的,但我不想路径片段,我要完整路径。

Answer 1:

如果你真的想用ls ,然后用awk格式化输出:

ls -R /path | awk '
/:$/&&f{s=$0;f=0}
/:$/&&!f{sub(/:$/,"");s=$0;f=1;next}
NF&&f{ print s"/"$0 }'


Answer 2:

使用发现:

find .
find /home/dreftymac

如果你只想要的文件(省略目录,设备等):

find . -type f
find /home/dreftymac -type f


Answer 3:

ls -ld $(find .)

如果你想通过修改时间你的输出进行排序:

ls -ltd $(find .)



Answer 4:

请尝试以下简单的方法:

find "$PWD"


Answer 5:

最佳的命令是: tree -fi

为了使用这些文件而不是链接,你必须删除>从你的输出:

tree -fi |grep -v \>

如果你想知道每个文件的性质,(例如读取只ASCII文件)有两个while S:

tree -fi | \
grep -v \> | \
while read first ; do 
    file ${first}
done | \
while read second; do 
    echo ${second} | grep ASCII
done


Answer 6:

哦,答案真是一个长长的名单。 它帮助了很多,最后我创造了由自己,我一直在寻找:

要列出一个目录及其子目录中的所有文件:

find "$PWD" -type f

要列出一个目录及其子目录中的所有目录:

find "$PWD" -type d

要列出一个目录及其子目录中的所有目录和文件:

find "$PWD"


Answer 7:

我不知道完整的路径,但您可以使用-R递归。 另外,如果你没有在弯曲ls ,你可以做find *



Answer 8:

使用比LS其他没有外部命令:

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



Answer 9:

du -a

得心应手一些有限的家电壳里寻/定位不可用。



Answer 10:

查找/会做的伎俩



Answer 11:

我觉得对于一个平面列表最好的方法是:

find -D tree /fullpath/to-dir/ 

(或以它保存在一个txt文件)

find -D tree /fullpath/to-dir/ > file.txt


Answer 12:

为你将来的人最简单的方法就是:

du

然而,这也说明了什么包含在每个文件夹,您可以用awk只输出文件夹名称的大小:

du | awk '{print $2}'

编辑 - 对不起对不起,是我不好。 我认为这是唯一被需要的文件夹。 生病的情况下,任何人在这里离开这个在将来需要它反正...



Answer 13:

不要让复杂。 我只是用这个,得到了一个漂亮的输出:

ls -lR /path/I/need


Answer 14:

对于具有使用所有可能的选项LS的自由:

find -type f | xargs ls -1



Answer 15:

下面是显示的目录名称的部分答案。

ls -mR * | sed -n 's/://p'

说明:

ls -mR *列出一个结束的完整目录名“:”,然后分别列出该目录中的文件

sed -n 's/://p'发现,在冒号结尾线,剥去结肠和打印线

通过遍历目录的列表,我们应该能够找到的目录也是如此。 不过干活就可以了。 它是通过xargs的获得通配符是一个挑战。



Answer 16:

运行具有以下格式bash命令:

find /path -type f -exec ls -l \{\} \;


Answer 17:

添加一个通配符的LS目录的结尾强制完整路径。 现在你有这样的:

$ ls /home/dreftymac/
foo.txt
bar.txt
stackoverflow
stackoverflow/alpha.txt
stackoverflow/bravo.txt
stackoverflow/charlie.txt

你可以这样做,而不是:

$ ls /home/dreftymac/*
/home/dreftymac/.
/home/dreftymac/foo.txt
/home/dreftymac/bar.txt
/home/dreftymac/stackoverflow:
alpha.txt
bravo.txt
charlie.txt

不幸的是,这并不为打印到递归目录的完整路径,因此它可能不是你要找的完整解决方案。



Answer 18:

ls -lR就是你要找的人,或者至少我是。 干杯



Answer 19:

很多答案我看到的。 这是我的,我觉得非常有用的,如果你是在Mac上工作。

我敢肯定,你知道有一些“捆绑”的文件( 后缀名为.app,.rtfd,.workflow,等等)。 而综观Finder的窗口,他们似乎单个文件。 但他们不是。 和$ ls$ find它们看作目录。所以,除非你需要列出其内容为好,这对我的作品:

find . -not -name ".*" -not -name "." | egrep -v "\.rtfd/|\.app/|\.lpdf/|\.workflow/"

当然,这是工作目录,你可以添加其他包扩展(与却总/后他们)。 或任何其他分机如果不是捆绑的无/

颇为有趣的“ .lpdf/ ”(多语言PDF)。 它有正常的“ .pdf在Finder中”扩展(!!)或无。 这样,你得到(或者它只是计数1个文件)这个pdf ,而不是一堆东西...



Answer 20:

如果目录为相对路径过去了,你将需要调用find前将其转换为绝对路径。 在下面的例子中,目录被传递作为第一个参数传递给脚本:

#!/bin/bash

# get absolute path
directory=`cd $1; pwd`
# print out list of files and directories
find $directory


Answer 21:

tar cf - $PWD|tar tvf -             

这是缓慢的,但工程递归和打印两个目录和文件。 你可以使用awk / grep的管道,如果你只是想没有所有的其他信息/目录下的文件名:

tar cf - $PWD|tar tvf -|awk '{print $6}'|grep -v "/$"          


Answer 22:

@ ghostdog74:与您的解决方案的小调整。
下面的代码可以用来搜索文件,其完整的绝对路径。

sudo ls -R / | awk '<br/>
/:$/&&f{s=$0;f=0}<br/>
/:$/&&!f{sub(/:$/,"");s=$0;f=1;next}<br/>
NF&&f{ print s"/"$0 }' | grep [file_to_search]


Answer 23:

我知道文件名,但希望在目录中。

找到$ PWD | fgrep一样的文件名

在Mac OS中10.12.1完美地工作



文章来源: ls command: how can I get a recursive full-path listing, one line per file?