繁体   English   中英

如何在linux中使用bash查找所有.sh文件并使它们可执行?

[英]How to find all .sh files and make them executable using bash in linux?

同样,当我启动时,我想在找到这些 .sh 文件时将路径传递给文件夹

我从这个开始

#!/bin/bash
find /home/user_name -name "*.sh" 

并且在脚本必须用可执行文件写入徽标列表之后

就安全性和奇怪的文件名(空格、奇怪的字符等)而言,最安全和最安全的方法是直接使用find

find /home/user -name "*.sh" -execdir chmod u+x {} +

您可以查看注释和手册以了解为什么这是安全的,但简而言之,它可以确保您的文件在chmod命令中正确引用。 execdir (而不是-exec )是一项额外的安全功能,可确保在找到文件的目录中执行命令以避免竞争条件(在手册中详细说明)。

如果你想让当前用户的所有文件都可以执行,你可以使用如下命令(假设你对目标主文件夹中的所有文件都有权限):

find /home/user_name -name "*.sh" -print0 | xargs -0 chmod u+x

其它的办法 :

find . -name "*.sh" -exec chmod ux+y {} \;

您可以首先使用以下命令检查您的命令

find . -name "*.sh" -print

通过@kabanus 命令

#!/bin/bash

# chmod u+x $(find $1 -name "*.sh")
# ls -1 $1/*.sh
find $1 -name "*.sh" -print -exec chmod u+x {} +

并用作

$ ./script.sh /your_directory

/your_directory - 脚本中的第一个参数 ( $1 )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM