linux - shell 必须解析 ls -Al 输出并获取最后一个字段(文件或目录名)任何解决方案

标签 linux bash shell unix scripting

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

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如果目录名称中有空格,则不是名称,它是名称的一部分。也许有一些实用程序可以删除姓氏或删除之前的任何内容?我需要找到任何解决方案。请帮忙!

已编辑:我知道 parse ls -Al 是个坏主意,但我应该用上面的构造准确地解析它!没办法使用这样的东西

for f in *; do
    somecommand "$f"
done

最佳答案

如果您只需要文件名,请不要解析 ls -Al

您可以将所有文件名放在一个数组中:

files=( * )

或者您可以直接遍历文件:

for f in *; do
    echo "$f"
done

如果 ls 中有您需要的特定内容,请更新您的问题以指定您需要的内容。

关于linux - shell 必须解析 ls -Al 输出并获取最后一个字段(文件或目录名)任何解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15721925/

相关文章:

python - 将打印作业从python发送到谷歌云打印

bash - 在我的脚本中创建通过电子邮件发送的内容的日志

linux - QProcess 传递(shell)参数

cocoa - 如何创建一个创建新站点的 Coda 插件?

python - 在 shell 脚本中读取用户输入

linux - 将目录权限应用于 linux 中的所有新子目录

linux - docker.sock权限被拒绝

xml - 在没有 XML 解析器的情况下为最近修改的文件过滤 svn ls --xml

linux - 如何使用 bash 确定声卡类型?

linux - 在版本名称和版本号之间进行过滤