列出除了“.”和“..”以外的所有文件的命令

54

我想找一个命令,可以列出所有文件(包括隐藏文件),但必须排除当前目录和父目录。请帮忙。

$ ls -a \.\..
3个回答

71

关于 ls(1) 文档 (man ls):

-A, --almost-all 不显示隐含的 . 和 ..

你需要使用此选项 (不需要任何额外参数,如 .*):

ls -A

或者更好的是:

/bin/ls -A

2
为什么 /bin/ls -A 排除了点目录,但 ls -A 却没有?至少在我的系统上是这样的,我的系统基于 Ubuntu 14.04.5 发行版。 - Sophie
4
可能 ls 是一些别名(或 shell 函数),例如在您的 .bashrc 文件中。 - Basile Starynkevitch
1
使用“\ls -A” 命令可以禁用 ls 别名,但是 '/bin/ls' 是防弹的 :) - A.D.

5
$ ls -lA

适合我的需求最佳。

为了方便起见,我建议在.bashrc文件中定义一个别名,如下所示:

alias ll='ls -lA'

4
我有这样一个情况,我想要删除一系列的点目录。在我的服务器上,我们添加一个点和某些其他文本模式(时间戳)来标记需要自动删除的目录。有时我需要手动执行此操作。
正如我在Basile Starynkevitch's的回复中所评论的那样,当您使用像下面这样的globbing模式时,-A开关会失去其功能,并且只能像-a一样工作:
 runlevel0@ubuntu:~/scripts$ ls -1dA .*
.
..
.comparepp.sh.swp

我尝试以用户身份删除文件肯定会出现错误,但作为root,我不想去想可能会发生的事情!

在这种情况下,我的做法是:

for dir in $(ls -1ad .* | tail -n +3) ; do rm -rfv $dir  ; done

我删除了前两行带有点的内容,如您所见。为了回答问题,这将完成任务:
ls -d1A .* | tail -n +3

顺便提一下,以 root 身份运行时只会出现一个错误消息“无法删除”,但在生产服务器上最好保持过度谨慎。 - runlevel0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接