【问题标题】:Show executable files and run显示可执行文件并运行
【发布时间】:2016-10-25 15:47:25
【问题描述】:

我需要有关我的程序的建议。在 bash 中,我需要在带有索引的目录中显示可执行文件,然后按索引运行文件。有可能吗?

感谢您的回复

【问题讨论】:

  • 所以你想过滤索引并运行特定的索引或者只运行目录中的所有可执行文件?

标签: bash shell unix debian


【解决方案1】:

find 命令看起来有点复杂但非常有用:

找到 . -maxdepth 1 -type f -perm -a=rx -exec echo Exec {} \;

  • -maxdepth 1:最多下降1级
  • -type f :只有普通文件(不是目录)
  • -perm -a=rx :所有者可以读取和执行
  • -exec 执行 {} \; :对于找到的每个文件都回显执行文件;

测试:

find . -maxdepth 1 -type f -perm -a=rx -exec echo Exec {} \;   
Exec ./kl.sh

【讨论】:

    【解决方案2】:

    要列出一个目录中的所有可执行文件,你可以尝试:

    ls -l | awk '$1~"-rwxr-xr-x"{ print $9 }' 
    

    此命令将打印带有-rwxr-xr-x 的文件名。您可以重新排列它以满足您的需要。

    当您拥有所需的可执行文件列表时,运行它们:

    for i in $( ls -l | awk '$1~"-rwxr-xr-x"{ print $9 }' ); do ./$i; done    
    

    【讨论】:

    • 解析ls 输出很脆弱。在这种情况下,文件必须对所有者、组和世界是可执行的——这可能是正确的,也可能不是。为什么不改用find -executable?或者[ -x $file ] 在循环中?这里的其他人也可能会抱怨使用反引号而不是$(...)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-07
    • 2013-06-12
    • 1970-01-01
    • 2019-04-23
    • 1970-01-01
    相关资源
    最近更新 更多