例如,如果我们有如下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