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

ber*_*man 4 linux bash command-line find

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

find . -name 'Subscription.java' | xargs cd
Run Code Online (Sandbox Code Playgroud)

要么:

find . -name 'Subscription.java' -exec cd {} \;
Run Code Online (Sandbox Code Playgroud)

我知道这不起作用,因为它既试图cd提供包含文件的整个绝对路径,也因为xargs不能做任何内置的shell命令,但你明白了我想要完成的事情.

Kev*_*nko 7

cd $(find . -name Subscription.java | xargs dirname)
Run Code Online (Sandbox Code Playgroud)

  • `cd $(dirname $(find.-name $ 1 | sed 1q))`通过转到找到的第一个来处理非唯一名称,如果找不到名称则回家.它还演示了`$(...)`的嵌套使用,这就是为什么这种符号比反引号更受欢迎的原因.您可能更喜欢'`sed'2,$ d'`'因为它避免了SIGPIPE错误搞乱`find`. (2认同)