是不是可以使用locate命令来查找目录? 为了更改,我想search一个目录,并排除不是目录的任何结果,例如文件或符号链接到文件。
虽然没有必要,我希望解决scheme也可以返回符号链接到其他目录(但是,而不是文件)。
最后,我想排除foo中的目录,只有一个例外。 如果foo的一个子目录也包含一个名为foo的子目录,我宁愿将它返回。
如果以下文件和目录存在…
/home/foo/ /home/foo/foo.txt /home/foo/someotherdir/ /home/foo/someotherdir/food/ /food/ /var/www/foo -> /home/foo/ /var/www/food -> /home/food/index.html
输出将只包含…
/home/foo/ /home/foo/someotherdir/food/ /food/ /var/www/foo -> /home/foo/
提前致谢。
编辑:谢谢你的回应。 我非常慎重地为这个命令locate而不是find 。
也许一个棘手的小问题,但它来了:
locate foo | xargs file -NF '|' |grep '| directory' | sed 's/| directory//g'
find只读预备数据库而不是文件系统。
使用find
包含foo的目录
find /path -name '*foo*' -type d
包含foo的链接,您需要阅读链接并testing目标是否是需要脚本的目录
#!/bin/bash f=$(readlink $1) if [ -d "$f" ] then echo $1 fi
像这样使用它
find /path -name '*foo*' -type l -exec script {} \;
locate foo | sed 's%/[^/]*$%/%'
编辑:这只是在最后一个斜杠后捕获所有的信息。
这个会做这个工作:
locate foo | grep "foo[^/]*/$"
它会比find选项快得多,但标准的locate警告,它可能是过时的24小时。