如何正确重定向ls -d * /的输出?

时间:2013-03-27 23:24:12

标签: bash

相当新的命令行,所以请耐心等待。

我应该在/usr/local中找到以数字结尾的目录。我已经设法列出了以下目录:

ls -d */

但是当我尝试使用带有通道管道的任何东西时:

find -name
grep
look

没有显示输出。我甚至尝试使用'*'通配符进行搜索,但没有显示任何内容。

我出错的任何想法?

5 个答案:

答案 0 :(得分:1)

find命令应该能够做你想做的事情,从它的外观来看你就是这样:

find / -type d -name <directory_name>

这将查找具有您从根目录指定的名称的任何目录。如果您按上面显示的那样运行命令,我认为缺陷是您没有指定开始搜索的目录。如果需要指定任何其他参数,也可以使用手册页:

http://unixhelp.ed.ac.uk/CGI/man-cgi?find

答案 1 :(得分:1)

find /usr/local -type d -name '*[0-9]'

这一切都在一个;在/usr/local/下查找名称以数字结尾的目录(并隐式打印结果)。

使用ls的代码可能需要如下所示:

cd /usr/local || exit 1
ls -d */ | grep '[0-9]/$'

这将列出名称末尾带有斜杠的目录,因此您需要搜索其中有数字后跟斜杠和名称末尾的名称。这与find命令之间的一个区别是ls仅在/usr/local中立即列出目录,而find将搜索目录层次结构。如果您不希望find向下搜索层次结构,请说明:

find /usr/local -maxdepth 1 -type d -name '*[0-9]'

(如果您将-maxdepth 1放在最后,find的某些版本会对此产生误解并抱怨。)

答案 2 :(得分:0)

find "/path/to/some/dir/*[0-9]" -type d -maxdepth 1

答案 3 :(得分:0)

ls -l /path/to/some/dir | grep "^d" | awk '{print $9}'

答案 4 :(得分:0)

for file in /path/to/some/dir/*; do \
    if [[ -d $file ]]; then \
        echo $file; \
    fi \
done