如何在终端中仅显示隐藏文件?

如何在终端中仅显示隐藏文件?

我有一个包含数千个文件的目录,其中一些是隐藏的。

该命令ls -a列出了所有文件,包括隐藏文件,但我只需要列出隐藏文件。

我应该使用什么命令?

答案1

此命令将仅列出隐藏文件:

ls -ld .?* 

解释:

 -l     use a long listing format

 -d, --directory
              list  directory entries instead of contents, and do not derefer‐
              ence symbolic links

.?* will only state hidden files 

答案2

ls -d .!(|.)

正是 OP 所寻找的。

答案3

如果你只想要当前目录中的文件(无递归),你可以这样做

echo .[^.]*

这将打印所有以 a 开头.且后跟一个或多个非点字符的文件的名称。请注意,对于以连续点开头的文件,此操作将失败,因此例如....foo将不会显示。

您还可以使用find

find -mindepth 1 -prune -name '.*'

-mindepth确保我们不匹配.,并且-prune意味着find不会进入子目录。

答案4

使用findawk

find . -type f | awk -F"/" '$NF ~ /^\..*$/ {print $NF}'

解释:

find . -type f--> 列出当前目录中的所有文件及其路径,例如,

./foo.html
./bar.html
./.foo1

awk -F"/" '$NF ~ /^\..*$/ {print $NF}'

/作为字段分隔符,awk 检查最后一个字段是否以点开头。如果以点开头,则打印相应行的最后一个字段。

相关内容