从查找结果中排除隐藏目录中的文件,但不排除隐藏文件(在非隐藏目录下)

Pau*_*omé 1 directory find

鉴于以下目录结构:

$ tree --noreport dir

dir
??? fileA
??? .hiddenfileA
??? .hiddendirA
|   ??? .hiddenfileB
?   ??? fileC
?   ??? fileD
??? dirA
    ??? .hiddenfileC
    ??? fileE
    ??? fileF

Run Code Online (Sandbox Code Playgroud)

要求是调用 find 以便从结果中排除隐藏目录中的文件而不是隐藏文件(在非隐藏目录下)。

预期回报应该类似于:

./.hiddenfileA
./dirA/.hiddenfileC
./dirA/fileE
./dirA/fileF
./fileA
Run Code Online (Sandbox Code Playgroud)

做了一些研究,发现这里的信息使我创建了以下调用find

$ find . -type f -not -path '*/\.*' -print
Run Code Online (Sandbox Code Playgroud)

但是这个解决方案的缺点是跳过隐藏的目录和文件

Ste*_*itt 5

修剪隐藏目录并将结果限制为文件:

find . -type d -name '.?*' -prune -o -type f -print
Run Code Online (Sandbox Code Playgroud)

正如jthill所建议的,您可能更喜欢过滤掉目录,这会导致显示文件、链接等:

find . -type d -name '.?*' -prune -o ! -type d -print
Run Code Online (Sandbox Code Playgroud)