我想找到保存某个文件的目录并在那里进行 cd。例如
find * -name hello.txt
输出:Documents/Projects/hello.txt
cd Documents/Projects
我如何管道化这些命令?谢谢!
答案1
尝试
cd $(dirname$(find /path -name hello.txt | head -n 1))
或者
cd $(find /path -name hello.txt | head -n 1 | xargs dirname)
您需要提供一个path
搜索,*
因为上面的内容将不起作用,因为 shell 会扩展它。
编辑,如果你的文件名中有空格
cd $(find /home -name 'he llo.txt' -print0 -quit | xargs -0 dirname)
如果你的目录名中也有空格
cd "$(find /path -name 'hello.txt' -print0 -quit | xargs -0 dirname)"
答案2
不需要查找所有文件head -1
,只需使用选项在找到第一个文件后-quit
使命令停止:find
hello.txt
$ cd $(dirname $(find /path -name hello.txt -print -quit))