我试图列出一个目录中的所有隐藏文件,但不列出其他目录,并且我尝试仅使用 ls 和 grep 来执行此操作。
ls -a | egrep "^\."
这是我到目前为止所拥有的,但问题是它还列出了隐藏的目录,当我不想要的时候。
然后,我想完全单独地列出隐藏的目录。
答案1
仅列出隐藏文件:
ls -ap | grep -v / | grep "^\."
注意文件这是不是目录的所有内容。没有归档到“Linux 中的一切都是文件”;)
仅列出隐藏目录:
ls -ap | grep "^\..*/$"
评论:
ls -ap
/
列出当前目录中的所有内容,包括隐藏的目录,并在目录末尾添加。grep -v /
反转 的结果grep /
,以便不包含目录。"^\..*/$"
匹配以 开头.
和结尾的所有内容/
。- 如果您想从第二部分的结果中排除
.
和目录,您可以使用option 代替for ,或者如果您喜欢使用正则表达式,您可以使用代替。..
-A
-a
ls
"^\.[^.]+/$"
"^\..*/$"
玩得开心!
答案2
列出当前目录中的隐藏文件和目录,包括 .和 ..:
echo .*
递归列出当前目录及其子目录中的隐藏文件和目录:
find . -name '.*'
如果要将结果保存到文件中,请使用重定向:
find . -name '.*' >output-file.txt
答案3
切换到zsh
(如果还没有),然后运行
ls .*(^/)
括号内的部分称为全局限定符,意味着选择除目录之外的所有内容。
如果您只对普通文件感兴趣,因此不仅要排除目录,还要排除其他特殊文件(命名管道等),然后尝试
ls .*(.)
答案4
尝试这个命令:
find -maxdepth 1 -type f -name '.*' | sed 's/^..//'
这将只查找当前目录(-maxdepth 1)中的文件(-type f),以“.”开头,sed 命令会删除每一行中的“./”。