对命令行相当陌生,所以请耐心等待。
我应该在/usr/local
最后找到带有数字的目录。我设法仅列出以下目录:
ls -d */
但是当我尝试通过管道使用任何东西时:
find -name
grep
look
没有显示输出。我什至尝试使用“*”通配符进行搜索,但没有显示任何内容。
有什么想法我哪里出错了吗?
对命令行相当陌生,所以请耐心等待。
我应该在/usr/local
最后找到带有数字的目录。我设法仅列出以下目录:
ls -d */
但是当我尝试通过管道使用任何东西时:
find -name
grep
look
没有显示输出。我什至尝试使用“*”通配符进行搜索,但没有显示任何内容。
有什么想法我哪里出错了吗?
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
会对此嗤之以鼻并抱怨。)
find 命令应该能够做你想做的事,而且从它的外观上看,你得到了它几乎是正确的:
find / -type d -name <directory_name>
这将在根目录中查找具有您指定名称的任何目录。如果您像上面显示的那样运行命令,我认为缺陷是您没有指定目录来开始搜索。如果您需要任何其他参数来指定,也可以使用手册页:
find "/path/to/some/dir/*[0-9]" -type d -maxdepth 1
ls -l /path/to/some/dir | grep "^d" | awk '{print $9}'
for file in /path/to/some/dir/*; do \
if [[ -d $file ]]; then \
echo $file; \
fi \
done