我正在尋找一種方法來找到我所知道的將是一個獨特的文件,然後切換到包含該文件的目錄。有沒有辦法找到一個特定的文件,然後一次轉換到包含它的目錄?
find . -name 'Subscription.java' | xargs cd
或者:沿着線的東西
find . -name 'Subscription.java' -exec cd {} \;
我知道這是行不通的,因爲它都試圖cd
提供整個絕對路徑,其中包含的文件,也因爲xargs
不能執行任何內置的shell命令,但是你明白了我想完成的事情。
正是我一直在尋找的命令。我知道它在那裏,但不知道該死的命令是什麼。真棒。謝謝。 – bergyman 2010-05-06 19:03:00
對於任何其他不知道如何做到這一點的人,我只是將它拍成一個shell函數: 函數fcd() { cd $(find。-name $ 1 | xargs dirname) } – bergyman 2010-05-06 19:09:11
'cd $ (dirname $(find。-name $ 1 | sed 1q))'處理非唯一名稱,找到第一個找到並返回,如果名稱未找到。它還演示了'$(...)'的嵌套使用,這就是爲什麼表示法比反引號更受歡迎的原因。你可能更喜歡''sed'2,$ d''',因爲它避免了與'find'相混淆的SIGPIPE錯誤。 – 2010-05-06 19:13:56