我是bash脚本的新手。我只是想创建一个脚本来搜索目录并回显所有子目录的名称。
代码的基础是以下脚本(称之为isitadirectory.sh):
#!/bin/bash
if test -d $1
then
echo "$1"
fi
所以在命令行中输入
$bash isitadirectory.sh somefilename
如果它是目录,它将回显somefilename。
但我想搜索父目录中的所有文件。
所以,我正试图找到一种方法来做像
这样的事情 ls -l|isitadirectory.sh
但当然上面的命令不起作用。有人能解释一个好的脚本吗?
答案 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