排除awk无法正常工作的文件夹

时间:2016-03-25 14:27:26

标签: linux shell awk ls

我已使用ls -alis制作文件夹内容列表,并使用awk过滤结果。

我在$11 != "." && $11 != ".."遇到了一些问题。我不想显示文件夹.和文件夹..,但它们仍在此处。

ls --color -alis /home/user/ | 
tr -s ' ' | cut -d " " -f11 |
awk '$1 !~"^/\./$" { print $1 }'

我也试过$11 !~ "^/./$"

2 个答案:

答案 0 :(得分:0)

Parsing output of ls is not recommended因为文件名可以包含空格新行等,并会破坏您的管道命令。

根据您的要求,您可以将此printfxargs

一起使用
printf "%s\0" * | xargs -0 ls --color -Alis

答案 1 :(得分:0)

不要双引用正则表达式,并且锚点(^$)进入正则表达式内部:

awk '$11 !~ /^\.\.?$/ { print }'

这与字段11包含一个或两个点(仅)的行不匹配。

这涉及awk脚本的问题;但是,你是否应该解析ls的输出是有争议的,因为它可能是不明确的。