我在寻找一个config文件夹,并试图更改到该目录:如何找到在linux -exec CD/UNIX
find . -name "config" -exec cd {} \;
有一个匹配,./my-applications/config
,但之后,我尝试这一点,说:
find: `cd': No such file or directory
我做错了什么?
我在寻找一个config文件夹,并试图更改到该目录:如何找到在linux -exec CD/UNIX
find . -name "config" -exec cd {} \;
有一个匹配,./my-applications/config
,但之后,我尝试这一点,说:
find: `cd': No such file or directory
我做错了什么?
命令cd
是内置的,而不是在/bin
或/usr/bin
发现了一个壳。
当然,您不能将目录更改为文件,并且您的搜索不会将其自身限制为目录。而cd
命令只会影响执行的命令,而不会影响执行find
命令的父shell。
用途:
cd $(find . -name config -type d | sed 1q)
注意,如果没有找到你的目录,你会回到你的home目录当命令完成。 (该sed 1q
确保您只通过一个目录名cd
;在Korn shell cd
的命令有两个值,并做一些事情还算懂事,但猛砸忽略了演员。)
find
运行-exec
程序作为子进程和子进程不能影响其父进程。所以,这是不可能的。你可能想尝试
cd `find . -name "config"`
更好地使用'$(...)'比反引号。 – 2011-06-13 21:23:43
更好做一个'找。 -type d ...'这样你就不会试图把'cd'放入一个文件中:-) – 2011-06-13 21:23:47
如果你有一个以上的config目录:
select config in $(find . -name config -type d)
do
cd $config
break
done
一些像Solaris这样的操作系统在/ usr/bin中有一个cd,但是这当然不会改变他们可以不改变当前的shell目录。 – jlliagre 2011-06-14 05:27:58
优秀。我没有意识到,cd是内置的外壳。这解释了它! – cwd 2011-06-14 16:08:41
如果你需要_cd_和另一个命令,你总是可以使用'sh -c',例如'find。 -name“config”-type d -exec sh -c“cd {}; git pull”\;' – DiegoG 2015-01-19 11:07:36