我必须解析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
我应该只使用ls -Al | <something>
例如:
ls -Al | awk '{print $8}'
但这不起作用,因为$8
如果目录名称中有空格,则不是名称,它是名称的一部分。也许有一些实用程序可以删除姓氏或删除之前的任何内容?
答案1
您永远不应该尝试解析ls
文件名列表。 bash 维基有整篇文章关于为什么你不应该解析ls
.文件中含有空格是最大的原因之一。
您想使用glob
:
printf '%s\n' *
您的问题仅表明您想要打印文件名,但我怀疑您也想对其采取操作。在这种情况下,您需要迭代 glob:
for f in *; do
somecommand "$f"
done