我尝试了以下命令:
>> 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 "."
。它不起作用。
答案 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
。