我有一个包含数千个文件的目录,其中一些是隐藏的。
该命令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
使用find
和awk
,
find . -type f | awk -F"/" '$NF ~ /^\..*$/ {print $NF}'
解释:
find . -type f
--> 列出当前目录中的所有文件及其路径,例如,
./foo.html
./bar.html
./.foo1
awk -F"/" '$NF ~ /^\..*$/ {print $NF}'
/
作为字段分隔符,awk 检查最后一个字段是否以点开头。如果以点开头,则打印相应行的最后一个字段。