我必须解析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如果目录名称中有空格,则不是名称,它是名称的一部分。也许有一些实用程序可以删除姓氏或删除以前的任何内容?
永远不要尝试解析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)