![如何检查给定目录及其子目录中的可执行文件?](https://linux22.com/image/1055386/%E5%A6%82%E4%BD%95%E6%A3%80%E6%9F%A5%E7%BB%99%E5%AE%9A%E7%9B%AE%E5%BD%95%E5%8F%8A%E5%85%B6%E5%AD%90%E7%9B%AE%E5%BD%95%E4%B8%AD%E7%9A%84%E5%8F%AF%E6%89%A7%E8%A1%8C%E6%96%87%E4%BB%B6%EF%BC%9F.png)
我理解将自己拥有的可执行文件保存在自己的主区域中是一种不好的做法,因此我需要一个脚本/工具,它可以递归检查给定目录(在本例中是我的主目录)及其所有子目录等(显然也应该检查隐藏文件和文件夹)并输出任何可执行文件的名称和位置,它还应该指示文件的所有者。我正在运行带有 GNOME 3.18 的 Ubuntu GNOME 15.10,这可能吗?
答案1
find ~ -type f -executable
应该可以。也许可以添加-exec ls -l {} \;
以获取用户和组。
答案2
find
命令最适合这个任务,与 stat 结合,你可以看到文件的所有者
find $HOME -type f -executable -printf "FILE:%p OWNER: " -exec stat -c "%U" {} \;
或者纯粹使用find
printf:
find $HOME -executable -printf "FILE:%p OWNER:%u\n "
如果你足够有冒险精神,这里有一个 Python 解决方案:
import os
for root, dirs, files in os.walk( os.getcwd() ):
for name in files:
file=os.path.join(root,name)
owner_uid=os.stat(file).st_uid
if os.access(file,os.X_OK):
print(file,owner_uid)