首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仅当文件未设置为可执行文件时,才需要在当前目录中运行命令

仅当文件未设置为可执行文件时,才需要在当前目录中运行命令
EN

Stack Overflow用户
提问于 2013-01-31 00:48:56
回答 1查看 246关注 0票数 0

以下是问题所在:

使用bash for循环,循环遍历当前目录中具有字符串"osl-guest“和".tar.gz”的文件(使用‘ls’命令,参见下面的示例输出),并且仅当文件未设置为可执行文件时,才对每个文件单独运行命令‘tar-zxf’。例如,要对文件‘file1’运行‘tar-zxf’命令,命令应该是:tar -zxf file1

"ls -l“的输出示例:

代码语言:javascript
复制
-rw-r--r--   1 lance lance   42866 Nov  1  2011 vmlinuz-2.6.35-gentoo-r9-osl-guest_i686.tar.gz
-rwxr-xr-x   1 lance lance   42866 Nov  1  2011 vmlinuz-3.4.5-gentoo-r3-osl-guest_i686.tar.gz
-rw-r--r--   1 lance lance   42866 Nov  1  2011 vmlinuz-3.5.3-gentoo-r2-osl-guest_i686.tar.gz
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-31 01:20:02

您可以通过以下方式执行循环,而无需调用ls

代码语言:javascript
复制
# For each file matching the pattern
for f in *osl-guest*.tar.gz; do
    # If the file is not executable
    if [[ ! -x "$f" ]]; then 
            tar -zxf $f;
    fi; 
done;

*osl-guest*.tar.gz只是使用外壳扩展来获得所需的文件列表,而不是将其称为ls

if语句检查文件是否可执行,-x是对可执行文件的测试,使用!会使结果无效,因此它只会在文件不可执行时进入if块。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14609260

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档