我怎么能得到awk输出$ 9 $ 10 $ 11等等,因为我的一些文件中有空格.
ls -l | awk '{print $9}'
Run Code Online (Sandbox Code Playgroud)
Cha*_*ffy 33
更好的解决方案:首先不要尝试解析ls输出.
irc.freenode.org #bash频道的官方维基解释了为什么这是一个坏主意,以及您可以采取的替代方法: http://mywiki.wooledge.org/ParsingLs
使用find,stat和类似工具将提供您正在寻找的功能而没有陷阱(并非所有这些都是显而易见的 - 有些仅在迁移到具有不同ls实现的平台时才会发生).
对于您的具体示例,我猜您正在尝试仅查找当前目录中的文件(而不是目录); 您当前使用的实现ls -l是错误的,因为它排除了具有+ t或setuid权限的文件.实现这一目标的正确方法如下:
find . -maxdepth 1 -type f -printf '%f\n'
Run Code Online (Sandbox Code Playgroud)
小智 5
只是为了完成。也可以使用 sed 完成:
# just an exercise in regex matching ...
ls -l | sed -E -e '1d; s/^([^ ]+ +){8}//'
Run Code Online (Sandbox Code Playgroud)