Linux 命令:查找程序名称并运行该程序

Linux 命令:查找程序名称并运行该程序

如何设法在目录和子目录中找到程序,然后运行该程序?

例如,

find . -type f -name "abc" 

查找所有 abc 可执行文件并且:

find . -type f -name "abc" | RUN "abc" -p (WRONG!!!)

使用一个参数“-p”运行abc程序。

我怎样才能实现它?

答案1

有多种方法,每种方法都更适合特定需求。欢迎来到 UNIX 世界。

这将运行以下命令nohup

find . -type f -name 'abc' | xargs -I '{}' nohup '{}' -p

解释

find .查看当前目录及其子目录。

-type f寻找文件。

-name 'abc'文件名应该完全是“abc”(区分大小写)。

|将结果文件列表通过管道传输到另一个程序。

xargs将各个条目发送至另一个程序。

-I '{}'在下列表达式中,'{}'用条目替换。

nohup这是将多次调用的程序xargs,每次都将其中一个find结果作为参数传递。此程序用于启动将在后台运行的作业,并且不会在当前会话断开连接时中断。为了让您检查结果,通过执行的命令的输出nohup默认附加到nohup.out当前目录中的文件中。

'{}'这是一个占位符,将被结果替换find

-p这将作为附加参数被附加。

例如:假设当前文件夹中有一个名为“abc”的文件,子文件夹中有另一个名为“sub”的文件;将执行的命令是:

nohup ./abc -p
nohup ./sub/abc -p

注意:运行可能会很有用,xargs -p因为它会在执行之前显示每个命令。应答y实际上会启动它,n而不是跳过它(find . -type f -name 'abc' | xargs -p -I '{}' nohup '{}' -p)。

或者使用sudo

find . -type f -name 'abc' | xargs -I '{}' sudo -u $USER '{}' -p

sudo执行命令并允许选择以哪个用户身份运行。在此示例中,它使用当前用户,其名称可在$USER环境变量中找到。

或者使用bash(或者您最喜欢的 shell):

find . -type f -name 'abc' | xargs -p -I '{}' bash -c "'{}' -p"

此处命令被传递给 bash,但您可以选择使用不同的 shell 来运行它们(当然,如果您已安装它)。只需替换bash为您选择的shcshtcshkshzsh...

或者使用parallel

find . -type f -name 'abc' | parallel --no-notice -I '{}' "'{}' -p"

parallel通常不会默认安装,但值得使用;可以将其视为增强版xargs(它被编写为使用相同选项),它具有能够运行其收到的条目的有用功能,而不必始终将它们传递给另一个程序(至少,我无法让 xargs 这样做)。顾名思义,命令默认并行运行,以最大限度地提高 CPU/线程利用率。该--no-notice选项隐藏了它始终显示的引用,直到使用 运行--bibtex

或者at

find . -type f -name 'abc' | xargs -I '{}' echo '{}' -p | at now

at安排命令在指定时间运行;在此示例中now用于立即运行命令。

答案2

find . -type f -name "abc" | xargs -I'{}' echo '{}' -p  | bash

或者

find . -type f -name "abc" | sed 's/$/ -p/' | bash

这两个命令首先在第一个管道前列出名为“abc”的文件。在第一个和第二个管道之间,这两个命令都-p在每行后附加参数。最后,在第二个管道之后,这些“abc”命令被发送到 bash 执行。

答案3

我只需运行这个:

find . -type f -iname 'abc' -executable -execdir '{}' -p \;

这将按abc顺序运行所有可执行文件,-p每次都带有参数。

细节

  • .在当前文件夹及其子文件夹中搜索
  • -type f仅限文件
  • -iname abc文件名限制(大小写)不敏感)
  • -executable限制为可执行文件
  • -execdir ... \;执行命令(执行)对于每个匹配的文件(\;),将工作目录设置为匹配文件夹(目录)
    • '{}'占位符被匹配的可执行文件替换(例如:“./abc”)
    • -p赋予可执行文件的参数

相关内容