日期:2014-05-16  浏览次数:20701 次

问题:执行目录下运行所有可执行文件然后输出的脚本
首先是如何查找当前目录下的所有可执行文件

find . -maxdepth 1 -perm +111

这里设置 -perm +111 体现所有有执行权限的文件,但是似乎输出并不准确,输出了很多目录。
且一些文件并非可执行的,但可设置x权限。 不知道有没有什么好的办法。

此外,脚本我写成
for i in 'find .....’
do 
exec $i > outfile
done

似乎也有问题, 且再当前目录在执行所有文件会不会递归调用当前这个脚本?

谢谢。





------解决方案--------------------
探讨
首先是如何查找当前目录下的所有可执行文件
find . -maxdepth 1 -perm +111

------解决方案--------------------
寻找可执行的文件,也可用file命令,例如
file * | grep executable
这样所有的可执行文件、shell都可以被找到,而目录和其他类型的文件都不会出现。

缺点是不检测x权限

建议和x权限的检测一起使用。
------解决方案--------------------
owenliang@linux-7lsl:~/csdn/src> find . -maxdepth 1 -perm -111 | xargs -n 1 file | egrep "executable" | cut -d ':' -f 1
./client
./server
./main
------解决方案--------------------
哦,我是从楼上拷贝下来的,没仔细看哈

for i in `file * | awk -F: '$0~/executable/ {print $1}'`
这样改改