0

这是问题所在:

使用 bash for 循环遍历当前目录中包含字符串“osl-guest”和“.tar.gz”的文件(使用 'ls' 命令,参见下面的示例输出),然后运行命令 'tar - zxf' 仅在文件未设置为可执行文件时单独在每个文件上。例如,要对文件“file1”运行“tar -zxf”命令,该命令将是:tar -zxf file1

“ls -l”的示例输出:

-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
4

1 回答 1

1

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

# 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.gzshell 扩展来获取您想要的文件列表,而不是调用它ls

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

于 2013-01-30T17:20:02.050 回答