thinksinbinary Asked: 2016-08-12 13:54:54 +0800 CST2016-08-12 13:54:54 +0800 CST 2016-08-12 13:54:54 +0800 CST 如何使 ls 仅显示文件? 772 我认为必须有一种方法让 ls 只显示非目录,但手册页并没有让它明显 ls 8 个回答 Voted Best Answer thomasrutter 2016-08-12T15:53:45+08:002016-08-12T15:53:45+08:00 ls -p | grep -v / 使用ls -ptellls将斜杠附加到目录条目,并使用grep -v /tellgrep仅返回不包含斜杠的行。 theabhinavdas 2016-08-12T15:07:25+08:002016-08-12T15:07:25+08:00 你可以试试这个: find . -maxdepth 1 -not -type d 并将其映射到一个特殊的别名。 但是,如果您真的热衷于使用该ls命令,请在此处: ls -p | egrep -v /$ user311189 2016-08-12T18:38:53+08:002016-08-12T18:38:53+08:00 或者: ls -lAh | grep -v '^d' 该方法列在 -l 长列表格式 -A 显示几乎所有(显示隐藏文件但不显示.和..) -h 人类可读的文件大小 而 grep -v不显示匹配记录 Regular expression过滤器^d- 以字母 d 开头(用于目录),即drwxrwxr-x <some file details> <foldername> 如果您不想每次都输入,可以将其设为bash/shell 配置文件的别名。 Levi Uzodike 2019-10-30T07:14:16+08:002019-10-30T07:14:16+08:00 我在您(@thinksinbinary)对@thomasrutter 答案的评论中看到,您希望能够以相反的顺序和列打印它们。您可能已经弄清楚或继续前进,但这里是: ls -pr | grep -v / | column -p将正斜杠 ('/') 添加到目录名称 -r反转输出顺序 -v让 grep 进行反向搜索以打印除目录之外的所有内容(所有没有 -p 放置的“/”的内容) “专栏把它放在专栏里” -显而易见的船长 Fazal 2020-12-17T02:45:28+08:002020-12-17T02:45:28+08:00 如果您只想要文件并且不想对它们执行任何操作,请运行: ls -lA | grep -v '^d' 或者,如果您想迭代每个文件,那么对我来说这有效: ls *.?* BarathVutukuri 2019-09-30T23:00:19+08:002019-09-30T23:00:19+08:00 ls -F | grep -v / 上面的命令显示文件,但它包括符号链接、管道等。如果你也想消除它们,你可以使用下面提到的标志之一。 ls -F将符号附加到文件名。这些符号显示有关文件的有用信息。 @表示符号链接(或文件具有扩展属性)。 *表示可执行。 =表示套接字。 |表示命名管道。 >意思是门。 /表示目录。 ls -F | grep -Ev '/|@|*|=|>|\|' 上面的命令只显示文件。 mixcocam 2020-10-31T17:11:36+08:002020-10-31T17:11:36+08:00 您可能想要使用du而不是ls. 它只会输出文件。然后只awk '{print $2}'输出文件路径。 您必须使用带有 du 的 -d 选项来限制深度。http://linuxcommand.org/lc3_man_pages/du1.html jasonleonhard 2021-03-09T13:44:57+08:002021-03-09T13:44:57+08:00 如果您只需要文件夹、文件或两者都需要怎么办? 如果您想要隐藏文件或隐藏文件夹怎么办? showVisibleFilesOnly() { ls -p | grep -v / } showVisibleFoldersOnly() { ls -p | grep / | grep "^." } showOnlyFilesIncludingHidden() { ls -Ap | grep -v / | grep "^." } showOnlyFoldersIncludingHidden() { ls -Ap | grep / | grep "^." } showHiddenFoldersOnly() { ls -Ap | grep / | grep "^\." | grep "\." } showHiddenFilesOnly() { ls -Ap | grep -v / | grep "^\." | grep "\." } showAllFilesAndFoldersIncludingHidden() { ls -Ap } showHiddenFilesAndFoldersOnly() { ls -Ap | grep "^\." }
使用
ls -p
tellls
将斜杠附加到目录条目,并使用grep -v /
tellgrep
仅返回不包含斜杠的行。你可以试试这个:
find . -maxdepth 1 -not -type d
并将其映射到一个特殊的别名。
但是,如果您真的热衷于使用该
ls
命令,请在此处:ls -p | egrep -v /$
或者:
该方法列在
-l
长列表格式-A
显示几乎所有(显示隐藏文件但不显示.
和..
)-h
人类可读的文件大小而 grep
-v
不显示匹配记录Regular expression
过滤器^d
- 以字母 d 开头(用于目录),即drwxrwxr-x <some file details> <foldername>
如果您不想每次都输入,可以将其设为bash/shell 配置文件的别名。
我在您(@thinksinbinary)对@thomasrutter 答案的评论中看到,您希望能够以相反的顺序和列打印它们。您可能已经弄清楚或继续前进,但这里是:
如果您只想要文件并且不想对它们执行任何操作,请运行:
或者,如果您想迭代每个文件,那么对我来说这有效:
上面的命令显示文件,但它包括符号链接、管道等。如果你也想消除它们,你可以使用下面提到的标志之一。
ls -F
将符号附加到文件名。这些符号显示有关文件的有用信息。@
表示符号链接(或文件具有扩展属性)。*
表示可执行。=
表示套接字。|
表示命名管道。>
意思是门。/
表示目录。上面的命令只显示文件。
您可能想要使用
du
而不是ls
. 它只会输出文件。然后只awk '{print $2}'
输出文件路径。您必须使用带有 du 的 -d 选项来限制深度。http://linuxcommand.org/lc3_man_pages/du1.html
如果您只需要文件夹、文件或两者都需要怎么办?
如果您想要隐藏文件或隐藏文件夹怎么办?