我想做类似的事情
ls -RA .?* >> LSRA.list
Run Code Online (Sandbox Code Playgroud)
但是使用这个命令和我尝试过的其他一些变体,我总是在我所在的目录中获得所有非隐藏文件。
即,如果目录包含文件
.hiddenfile foo
Run Code Online (Sandbox Code Playgroud)
使用上面的命令,我得到了两者的递归列表,而我只想保留以 . (但不是 . 目录本身!)
我检查了这个问题的答案,但我没有找到我的问题的解决方案。
更新:目前找到的最佳选择:
ls -RA .!(|.)*
Run Code Online (Sandbox Code Playgroud)
和
find -path './.*' -name '.*' -empty -printf %P\\n
Run Code Online (Sandbox Code Playgroud)
后者递归地列出所有隐藏目录中的所有隐藏文件(因此,如果隐藏目录包含非隐藏文件,则不会显示该文件)。
进一步更新。bac0n 和 vanadium 的两个答案都有效:我不能同时接受!(第一个递归显示隐藏目录中的非隐藏文件,后一个递归只显示隐藏文件)
要递归地仅列出终端中的隐藏文件,您可以使用该工具find
的-type f
选项:
find ~ -type f -name '.*'
Run Code Online (Sandbox Code Playgroud)
这将在用户的主目录中找到基本名称以点开头的所有文件,即隐藏文件或文件夹。删除-type f
以列出隐藏文件和文件夹,或指定type d
仅列出隐藏目录。通过替换~
为有效路径名来指定任何其他目录。指定.
列出当前工作目录及以下的隐藏文件。