繁体   English   中英

有没有办法找到一个特定的文件,然后一次性更改到包含它的目录?

[英]Is there a way to find a specific file and then change into the directory containing it in one go?

我正在寻找一种方法来找到我所知道的唯一文件,然后切换到包含该文件的目录。 有点像:

find . -name 'Subscription.java' | xargs cd

要么:

find . -name 'Subscription.java' -exec cd {} \;

我知道这是行不通的,因为它都试图cd提供整个绝对路径,其中包含的文件,也因为xargs不能做任何的shell命令建立,但你得到的是什么我要完成的地步。

cd $(find . -name Subscription.java | xargs dirname)

Linux / OSX(另类答案):

cd `find . -name Subscription.java | xargs dirname`

任何尝试编写cd命令的脚本都必须确保该命令在当前shell中运行。 否则,如果在子shell中运行,它将无法正常工作,因为不会更改父当前工作目录。

GNU find有-printf,可用于打印任何找到的文件的目录。 find的输出可以通过Command Substitution传递给cd

cd $(find . -name Subscription.java -printf '%h\n')

cd(在bash中)忽略额外的参数,因此如果找到多个文件,cd将变为第一个找到的文件的目录。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM