找到目录中的所有* .sh文件

时间:2013-08-06 13:51:56

标签: shell for-loop directory

我想在某个目录中找到所有* .sh文件,但脚本中有一些错误......

#!/bin/sh
for plik in /var/panel/starter/*
do  
    if [ $(basename "$plik") != "priority" ] && [ $(basename "$plik") != "PRIORITY" ] 
    then
    for plik in $plik/*
    do
        filename=$(basename "$plik")
        extension="${filename##*.}"
        filename="${filename%.*}"
        if [ "$extension" == "sh" ]
        then
        echo $plik
        fi
    done
    fi
done 

/ var / panel / starter中有一些文件夹,在这些文件夹中有shell脚本,这就是我用于循环两次的原因。

这是错误:

[: 19: *: unexpected operator
[: 19: sh: unexpected operator
[: 19: sh: unexpected operator
[: 19: sh: unexpected operator
[: 19: *: unexpected operator

我想问题是空文件夹,如:

/var/panel/starter/cs16/*

并且我不知道如何处理它。

3 个答案:

答案 0 :(得分:11)

为什么要使用脚本,当你可以使用:

find path_to_folder -iname "*.sh"

答案 1 :(得分:3)

sh: unexpected operator应该给你一个线索。

您正在使用不支持第19行sh运算符的==执行脚本。使用bash执行脚本应该可以正常运行,或者只使用{{1} }。

答案 2 :(得分:0)

为什么不使用find和grep?

find /var/panel/starter/ -name "*.sh" | grep -iv "/var/panel/starter/priority"