Answers:
试试这个:
find . -maxdepth 1 -not -type d
ls .
没有目录的等效项-就是这样。
-ls
或-exec ls -l {} \;
使它像ls -l
没有目录。
要使其完全等同于ls .
您,无需显示隐藏的目录。
find . -maxdepth 1 -not -type d -and -not -name '.*'
仍然会给每个文件名加上前缀“ ./”。这并不是真正的问题,但我认为这很丑陋。我去了:
ls -p | grep -v '/$'
这将为您提供看起来相同的清单,您也可以添加其他ls
参数。添加--color=always
,您将获得dircolors,或-a
查看隐藏的文件。
我喜欢Alexander的回答,因为他实际上取决于所讨论文件的文件系统特性,因此永远不会被愚弄。我的答案将被名称中最后一个字符“ /”的文件所欺骗。但这似乎是在自找麻烦。
虽然这是一个旧帖子,但我认为这可能会有所帮助。
$ ls -l | grep -v ^ d
它将列出所有文件,包括符号链接,字符和阻止文件。
ls $(file --no-pad -F' ' * | grep -v directory | cut -d' ' -f1)
这样,您仍然可以使用ls
通常需要的任何其他选项。或者...删除-v
以仅列出目录。或者...用任何其他可以file
理解和报告的文件类型替换目录,例如ASCII,空,ELF等。
ls -t .|while read f;do [ -f "$f" ]&& echo $f;done
在我的测试中快了大约3倍
我在find
二进制不支持的系统上,-not
最终使用了:
ls|while read f;do [ -f "$f" ]&& echo $f;done
优点:不依赖于除sh ls echo
与bash和破折号兼容之外的任何内容,
可以通过更改以使其匹配其他内容(例如目录),从而-f
比某些答案更快,并且使用更少的RAM和CPU