bash查找目录

时间:2011-07-22 09:15:13

标签: linux bash directory

我是bash脚本的新手。我只是想创建一个脚本来搜索目录并回显所有子目录的名称。

代码的基础是以下脚本(称之为isitadirectory.sh):

     #!/bin/bash

     if test -d $1
         then
                echo "$1"
     fi

所以在命令行中输入

       $bash isitadirectory.sh somefilename 

如果它是目录,它将回显somefilename。

但我想搜索父目录中的所有文件。

所以,我正试图找到一种方法来做像

这样的事情
           ls -l|isitadirectory.sh

但当然上面的命令不起作用。有人能解释一个好的脚本吗?

9 个答案:

答案 0 :(得分:55)

find . -mindepth 1 -maxdepth 1 -type d

答案 1 :(得分:31)

在特定情况下,您正在寻找1)您知道2)名称的目录,为什么不尝试这个:

find . -name "octave" -type d

答案 2 :(得分:8)

尝试使用

find $path -type d

目前的目录

find . -type d

答案 3 :(得分:4)

以下行可能会给你一个想法......你要的是什么

#!/bin/bash

for FILE in `ls -l`
do
    if test -d $FILE
    then
      echo "$FILE is a subdirectory..."
    fi
done

您可以查看bash'for'loop。

答案 4 :(得分:3)

这里已有很多解决方案,所以只是为了好玩:

 file ./**/* | grep directory | sed 's/:.*//'

答案 5 :(得分:2)

find ./path/to/directory -iname "test" -type d

我发现这对于使用-iname进行不区分大小写的搜索来查找目录名非常有用。其中“测试”是搜索词。

答案 6 :(得分:0)

你必须使用:

ls -lR | isitadirectory.sh

(参数-R是递归)

答案 7 :(得分:0)

不确定..但是树命令可能是你应该看的东西。 http://linux.die.net/man/1/tree

tree -L 2 -fi

答案 8 :(得分:0)

就我而言,我需要完整的路径,所以我最终使用了

find $(pwd) -maxdepth 1 -type d -not -path '*/\.*' | sort

我需要使用一个bash脚本来提取很多存储库。这是脚本:

#!/bin/bash

cd /path/where/to/look/for/dirs

# Iterate over files ending with .pub
echo -e "Pulling all repos"
FILES=`find $(pwd) -maxdepth 1 -type d -not -path '*/\.*' | sort`
for f in $FILES
do
    echo -e "pulling from repo $f..."
    cd $f
    git pull
done