如何过滤包含前九个字符的至少一个"x"的行



例如,如果我们有如下txt

drwxr-sr-x  7 abcdefgetdf 
drwxr-sr-x  7 abcdef123123sa
drwxr-sr--  7 abcdefgetdf
drwxr-sr--  7 abcdeadfvcxvxcvx
drwxr-sr-x  7 abcdef123ewlld

严格回答标题中的问题:

awk 'substr($0, 1, 9) ~ /x/' txt

不过,如果您对至少设置了一个执行权限位的文件感兴趣,那么也许find -perm /0111值得研究。

awk 解决方案:

ls -l | awk '$1~/x/'

$1~/x/ - 正则表达式匹配,仅接受第一个字段包含x字符的行

我无法找出一个只检查前 9(或 10(个字符的"x"的行。但是这个小脚本可以解决问题。使用"ls -l"作为输入而不是文件,但传入文件进行过滤是微不足道的。

#!/bin/bash
ls -l | while read line
do
  perms="${line:0:10}"
  if [[ "${perms}" =~ "x" ]]; then
    echo "${line}"
  fi
done

最新更新