我正在尝试查找文件夹中可执行文件及其总数,它显示了文件但没有显示总数。下面是我的代码,请问有谁能帮我找出错误?我是一个新手,希望通过学习Bash脚本来提高自己,感谢。
#!/bin/bash
To="home/magie/d2"
cd "$To"
find . -type f -perm 755
if
find . -type f -perm 755
then
echo | echo wc -l
fi
find home/magie/d2 -type f -perm -u+rx | wc -l
或者
find home/magie/d2 -type f -perm +111 | wc -l
这里的所有答案都仅查找具有755权限的文件,但请记住,用户还可以执行具有744或700权限的文件。
使用/111可以查找任何一个拥有任何执行位的文件。
在当前目录下查找所有类型为文件且权限含有/111的文件,然后统计它们的数量。
if
结构和echo
即可。#!/bin/bash
To="home/magie/d2"
cd "$To"
find . -type f -perm 755
find . -type f -perm 755 | wc -l
我认为我会这样做:
#!/bin/bash
dir=$1
files="$(find $dir -perm 755)"
total=$(wc -l <<< "$files")
echo "$files"
echo "Total: $total"
在命令行中需要将所需目录作为参数传递,并使用引号以保留后面由wc
需要的换行符,以正确计算行数。
total=$(wc -l <<<"$files")
,但现在不确定这是否更好。 :) - jaypal singhfind . -type f -perm 755 | wc -l
- Dennis Williamsongrep -l . <(echo foo)
。 - Dennis Williamson<()
被称为进程替换,而命令替换是 $()
。管道(本身)和进程替换不会创建子Shell,但命令替换会创建。将管道输入 while
循环中会创建子Shell(这就是为什么应该使用 done < <(foo)
而不是 foo | while
的原因)。 - Dennis Williamson
Mac OS X 10.6.8
中,find
命令没有-executable
选项。 - anubhava-executable
选项。但由于它并不普遍可用,所以我在这里的答案中没有使用它。 - anubhava