ls -d .*
仅列出隐藏的“项目”(文件和目录)。(我认为)从技术上讲,它列出了以 开头的每个项目.
,其中包括当前目录.
和以上..
目录。
我也知道ls -A
列出了“几乎所有”的项目,列出了隐藏和未隐藏的项目,但不包括.
and ..
。但是,将这些组合起来ls -dA .*
并没有列出“几乎所有”我的隐藏项目。
我怎样才能排除 . 和..列出隐藏项目时?
ls -d .*
仅列出隐藏的“项目”(文件和目录)。(我认为)从技术上讲,它列出了以 开头的每个项目.
,其中包括当前目录.
和以上..
目录。
我也知道ls -A
列出了“几乎所有”的项目,列出了隐藏和未隐藏的项目,但不包括.
and ..
。但是,将这些组合起来ls -dA .*
并没有列出“几乎所有”我的隐藏项目。
我怎样才能排除 . 和..列出隐藏项目时?
从第二个答案:
这适用于我的机器(虽然我没有像 OP 那样使用 SSH):
如果没有隐藏文件或目录,您将收到一条错误消息:
错误消息出现在没有隐藏文件的目录上,因为
.
和..
被排除在外。shopt
考虑来自评论:
ls -d .[!.]*
没有工作extglob
您可以使用任何一组选项,并使用 . 在输出流中搜索匹配字符串或不匹配字符串
grep
。从 grep 手册页:
例如,如果我的
ls -A
输出是:我
ls -A |grep "Do"
会是:我还可以使用反向搜索
-v
来搜索不是我的表达的任何内容。从 grep 手册页:
因此,在您的情况下,表达式将是:
ls -d .* |grep "[.][a-z]\|[0-9]"
您还可以使用
find
:打印出完整路径,或者:
这也适用于空目录/没有此类文件。