鉴于以下目录结构:
$ 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)
但是这个解决方案的缺点是跳过隐藏的目录和文件。
修剪隐藏目录并将结果限制为文件:
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)