簡體   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