我在shell上执行某些命令时遇到了一些麻烦 我的问题是我想更具体地将目录更改为我不知道但包含名为xxx的文件的目录。 如何直接更改包含该文件的目录? 如果我知道包含该文件的目录的名称会更容易,因为我只需要使用cd~ /目录名。 谁能帮我? 感谢
答案 0 :(得分: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")")"
答案 1 :(得分:1)
如果您不知道文件的位置,请转到系统的根目录并查找:
cd /
find . -iname filename
答案 2 :(得分:1)
在几个Linux系统中,您可以这样做:
$ cd `find . -name "filename" | xargs dirname`
但是将“filename”更改为您要查找的文件。
答案 3 :(得分:0)
BASH
cd `find . -name "*filename*" | head -1`
这是对乔某答案的一种变化。查找包含字符串 filename 的第一个文件,然后将当前目录更改为其位置。
* 是一张外卡, filename 之前和/或之后可能会有一些内容。