如何在linux/unix中找到-exec cd

cwd*_*cwd 15 unix linux exec find

我正在搜索配置文件夹,并尝试更改到该目录:

find . -name "config" -exec cd {} \;

有一场比赛,./my-applications/config但在我尝试之后它会说:

find: `cd': No such file or directory

我究竟做错了什么?

Jon*_*ler 18

该命令cd是内置的shell,在/bin或中找不到/usr/bin.

当然,您无法将目录更改为文件,并且您的搜索不会将自身限制为目录.该cd命令只会影响执行的命令,而不会影响执行命令的父shell find.

使用:

cd $(find . -name config -type d | sed 1q)
Run Code Online (Sandbox Code Playgroud)

请注意,如果找不到您的目录,则在命令完成时您将返回主目录.(sed 1q确保您只传递一个目录名称cd; Korn shell cd在命令上获取两个值并执行相当明智的操作,但Bash忽略了额外的内容.)

  • 如果你需要_cd_和另一个命令,你总是可以使用`sh -c`,例如`find.-name"config"-type d -exec sh -c"cd {}; git pull"\;` (2认同)

jll*_*gre 5

如果您有多个配置目录:

select config in $(find . -name config -type d)
do
  cd $config
  break
done
Run Code Online (Sandbox Code Playgroud)