我必须编写一个脚本来查找目录中的所有可执行文件。因此,我尝试了几种实现它的方法,它们实际上起作用了。但是我想知道是否有更好的方法。
所以这是我的第一种方法:
ls -Fla | grep \*$
这很好用,因为-F标志为我完成了工作,并在每个可执行文件中添加了一个星号,但可以说我不喜欢该星号。
这是第二种方法:
ls -la | grep -E ^-.{2}x
这也很好用,我想用破折号作为第一个字符,然后我对接下来的两个字符不感兴趣,而第四个字符必须是x。
但是需求中有些含糊,因为我不知道是否需要检查用户,组或其他可执行文件的权限。所以这可以工作:
ls -la | grep -E ^-.{2}x\|^-.{5}x\|^-.{8}x
因此,我正在测试第四,第七和第十个字符为x。
现在,我真正的问题是,使用ls和grep与正则表达式一起说是否有更好的解决方案:
我只想grep这些文件,在由…产生的一行的前十个字符中至少有一个x ls -la
您需要使用ls吗?您可以使用find执行相同的操作:
find . -maxdepth 1 -perm -111 -type f
将返回当前目录中的所有可执行文件。删除-maxdepth标志以遍历所有子目录。
您可以尝试这种可怕的做法,但它可能会匹配包含看起来像权限的字符串的文件。
ls -lsa | grep -E "[d\-](([rw\-]{2})x){1,3}"
问题内容: 我使用Go在各种平台上编译了一个程序,并通过调用相对路径或仅通过其名称(如果它在PATH变量中)来运行它。 是否可以找出可执行文件在哪里? 说,我的程序称为“ ()”。我可以运行,(如果它在PATH中)。 我尝试使用,我想我应该检查程序名称是否包含除“ foo”以外的其他内容。如果是,请使用,如果否,请使用(我找不到函数名,有一个通过PATH查找以检查程序在哪里的函数)。 问题答案:
问题内容: 我正在使用以下内容以递归方式在目录中搜索特定的字符串,并将其替换为另一个: 这样可以。唯一的问题是,如果字符串不存在,则失败,因为它没有任何参数。这对我来说是个问题,因为我是使用ANT自动运行的,而构建由于失败而失败。 如果找不到该字符串,有没有办法使它失效? 我对我可以使用的单行简单解决方案感兴趣(不一定与或与此类通用unix命令一起使用)。 问题答案: 您可以使用和直接进入,而不是
我在安装Psycopg2时遇到了麻烦。尝试时出现以下错误: 但问题是实际上在我的中;它运行起来没有任何问题: 我对这些错误感到困惑。有人能帮忙吗? 顺便说一下,我所有命令。我也在RHEL 5.5上。
问题内容: 我使用Selenium和chromedriver创建了一个小型网络抓取应用程序,用于将内容输出到excel文件的项目。不幸的是,我为此应用程序开发的人并不是最精通技术的人。 所以我的问题是如何与这些人共享此应用程序? 我查看了py2exe.org,但在创建可执行文件时并未考虑chromedriver。还有其他更好的方法,而无需这些人将文件手动添加到其“ usr / bin”吗? 问题答
问题内容: 我在安装psycopg2时遇到问题。我尝试执行以下操作时收到以下错误pip install psycopg2: 但是问题出在我身上PATH; 它运行没有任何问题: 我尝试将径添加到文件中,并使用从其网站(http://initd.org/psycopg/)下载的源文件进行构建,然后收到以下错误消息! 但实际上是那里!!! 这些错误使我感到困惑。有人可以帮忙吗? 顺便说一下,我sudo所
我有独立的应用程序,它绑定在可执行的中。在可执行的清单文件中,有一个class-path条目,其中列出了所有依赖的(包括所有的日志实现jar)。这个可执行jar还包含文件。 使用这种结构,当我使用简单的命令运行应用程序时,应用程序在正确的日志记录下运行良好。但这里的主要问题是,要更改日志级别,需要打开jar文件,而我不能要求客户端这样做。所以我将放在了jar外部,但现在所有日志记录都发生在控制台上