解决方案

解决方案

给定基本find命令:

find . -type d

对于返回的每个目录,我想生成一个交互式 shell,该 shell 将该目录作为当前目录。

答案1

解决方案

这有效:

find . -execdir sh \;

演示

# Create some sample directories
$ for i in {1..4}; do mkdir -p "/tmp/example/$i/foo" ; done

# spawn
$ find -s /tmp/example -name foo -execdir sh \;
sh-3.2$ pwd
/private/tmp/example/1
sh-3.2$ exit
sh-3.2$ pwd
/private/tmp/example/2
sh-3.2$ exit
sh-3.2$ pwd
/private/tmp/example/3
sh-3.2$ exit
sh-3.2$ pwd
/private/tmp/example/4
sh-3.2$ exit
$

怎么运行的

寻找

相关联机帮助页信息和/或其他信息:

-s:使 find 按字典顺序(即每个目录中的字母顺序)遍历文件层次结构。这对于解决方案并不重要,但它使 shell 的顺序是可预测的。

/tmp/example:路径参数 – find 实用程序递归地向下查找列出的每个路径的目录树。

-name pattern:如果正在检查的路径名的最后一个部分与模式匹配,则匹配文件。特殊的 shell 模式匹配字符 ( ['',]'', *'', and?'') 可以用作模式的一部分。

-execdir utility \;: -execdir 主选项与 -exec 主选项相同,但实用程序将从保存当前文件的目录中执行。

shsh在此上下文中运行会从保存当前文件的目录中生成一个交互式 shell。

相关内容