1

对命令行相当陌生,所以请耐心等待。

我应该在/usr/local最后找到带有数字的目录。我设法仅列出以下目录:

ls -d */

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

find -name
grep
look

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

有什么想法我哪里出错了吗?

4

5 回答 5

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/localfind将搜索目录层次结构。如果您不想find向下搜索层次结构,请这样说:

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

(如果你放在-maxdepth 1最后,有些版本的人find会对此嗤之以鼻并抱怨。)

于 2013-03-28T00:07:02.263 回答
1

find 命令应该能够做你想做的事,而且从它的外观上看,你得到了它几乎是正确的:

find / -type d -name <directory_name>

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

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

于 2013-03-27T23:28:02.143 回答
0
find "/path/to/some/dir/*[0-9]" -type d -maxdepth 1
于 2013-03-27T23:57:38.607 回答
0
ls -l /path/to/some/dir | grep "^d" | awk '{print $9}'
于 2013-03-27T23:58:51.860 回答
0
for file in /path/to/some/dir/*; do \
    if [[ -d $file ]]; then \
        echo $file; \
    fi \
done
于 2013-03-28T00:00:18.460 回答