我如何将“find”的输出通过管道传输到“cd”?

我如何将“find”的输出通过管道传输到“cd”?

我应该怎么做才能在文件夹列表中搜索文件并将当前目录更改为该文件的目录?

我尝试过 find -name script.py | cd,但是没有起作用(并不是我所期望的)。

谢谢你的帮助!

答案1

cd不从 stdin 读取,因此您无法将文件夹名称导入其中。但您可以使用"$(...)"命令的输出作为 的参数cd

cd "$(find -name script.py -type f -printf '%h\n' -quit)"

-printf '%h\n'告诉find仅输出到包含文件的文件夹。

-quitfind在找到第一个匹配的文件后告知退出。

答案2

您可以使用此代码:

cd "$(dirname "$(find / -type f -name test | head -1)")"

如您所见,它将使用命令从根目录顶部进行搜索find /,然后,它将列出名为 test - 的常规文件name test,最后它将更改到其目录。

注意:通过的管道head -1将过滤掉除第一个之外的所有内容。

dirname- 从文件名中删除非目录后缀

cd更改目录

相关内容