2011-03-12 143 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")")"