如何查找文件夹中没有文件夹本身的所有文件

时间:2017-06-30 15:37:00

标签: linux shell find

我尝试了以下命令:

>> ls abc
1  2  3
>> find abc -name "*" -print0
abcabc/1abc/2abc/3
>> find abc -name "*" -print0 | xargs -0 ls
abc/1  abc/2  abc/3

abc:
1  2  3

如果我使用.,我们也会发现*。我们可以要求查找不返回.吗?

我也试过-not -path "."。它不起作用。

2 个答案:

答案 0 :(得分:3)

您可以指定相对于您指定的起点的最小深度

$ cd -- "$(mktemp --directory)"
$ mkdir a
$ touch a/b a/c
$ find a -mindepth 1 -name "*"
a/c
a/b

答案 1 :(得分:1)

您也可以通过这种方式使用-type f主要限制为仅文件:

$ mkdir abc
$ touch abc/{1..3}
$ ls abc
1   2   3
$ find abc -type f 
abc/1
abc/2
abc/3

然后find将仅显示目录作为文件路径显示的一部分:

$ mkdir abc/efg
$ mkdir abc/xyz
$ touch abc/efg/{4..6}
$ find abc -type f 
abc/1
abc/2
abc/3
abc/efg/4
abc/efg/5
abc/efg/6

最后一个示例显示.abc/xyz