必须解析 ls -Al 输出并获取文件或目录名称

Ale*_*ern 0 linux ls bash ksh

我必须解析ls -Al输出并获取文件或目录名称

ls -Al 输出 :

drwxr-xr-x  12 s162103  studs         12 march 28 2012 personal domain
drwxr-xr-x   2 s162103  studs          3 march 28 22:32 public_html
drwxr-xr-x   7 s162103  studs          8 march 28 13:59 WebApplication1
Run Code Online (Sandbox Code Playgroud)

我应该只使用 ls -Al | <something>

例如:

ls -Al | awk '{print $8}'
Run Code Online (Sandbox Code Playgroud)

但这不起作用,因为$8如果目录名称中有空格,则不是名称,它是名称的一部分。也许有一些实用程序可以删除姓氏或删除以前的任何内容?

jor*_*anm 6

永远不要尝试解析ls文件名列表。bash wiki 有一整篇关于为什么不应该解析ls. 文件有空格是最大的原因之一。

你想用 aglob代替:

printf '%s\n' *
Run Code Online (Sandbox Code Playgroud)

您的问题仅表明您想打印文件名,但我怀疑您也想对其采取行动。在这种情况下,您要遍历 glob:

for f in *; do
    somecommand "$f"
done
Run Code Online (Sandbox Code Playgroud)