给定基本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 主选项相同,但实用程序将从保存当前文件的目录中执行。
嘘
sh
:sh
在此上下文中运行会从保存当前文件的目录中生成一个交互式 shell。