2011-03-12 193 views
0

我在shell上執行一些命令時遇到了一些麻煩。
我的問題是,我想更改目錄更具體到我不知道但包含名爲xxx文件的目錄。 如何直接更改爲包含該文件的目錄? 如果我知道包含該文件的目錄名稱會更容易,因爲我只需要使用cd〜/目錄名稱。 任何人都可以幫助我嗎? 感謝更改目錄

+0

什麼操作系統?什麼編程語言?你根本沒有給我們任何背景。 – 2011-03-12 00:16:33

回答

1

如果你不知道一個文件,轉到系統的根目錄,找到

cd/
find . -iname filename 
1

在多種Linux系統,你可以這樣做:

$ cd `find . -name "filename" | xargs dirname` 

但將「文件名」更改爲您要查找的文件。

0

BASH

cd `find . -name "*filename*" | head -1` 

這是一種以Qiau回答一個變化。找到包含字符串的第一個文件,然後將當前目錄更改爲其位置。

*是一個外卡,有可能是一些和/或之後文件名之前。

2

如果你有GNU find

cd "$(find /startdir -name 'filename' -printf %h -quit)" 

你可以使用任何有效的目錄替換 「/ STARTDIR」,例如/.或`〜/。

如果你想cd到一個目錄這是包含可執行文件$PATH

cd "$(dirname "$(type -P "filename")")" # Bash 

cd "$(f=$(type -P "ksh"); echo "${f%/*}")" # Bash 

cd "$(dirname "$(which "filename")")"