我想找到一个文件,然后输入包含它的目录。我尝试过,find /media/storage -name "Fedora" | xargs cd
但是我当然会is not a directory
出错。
如何使用单行命令进入其父目录?
1
如果有来自多个位置的多个文件怎么办?
—
Sergiy Kolodyazhnyy
@Serg Im正在搜索Fedora * .iso文件,我知道只有一个。我想,如果还有更多,它将进入第一个难题
—
Hrvoje T
在bash with中
—
彼得·科德斯
shopt -s globstar
,您可以使用cd /media/storage/**/Fedora
,但这并不会在第一次匹配时就停止评估glob(因此,它比steeldriver的解决方案要慢。对于交互式使用,我通常要做的是触摸鼠标并复制/粘贴目录名称, (和Alt + Backspace键根据需要去掉结尾的路径组件我不想),但如果你这样做了很多我想一个shell函数可能是值得做的。
顺便说一句,
—
彼得·科德斯
xargs cd
不可能工作。 cd
只能作为shell内置程序使用,因为它必须修改shell本身的上下文。有没有办法一个xargs
子进程可以做到这一点。IDK(如果这就是您的意思),或者find
打印的路径包含空格,这些空格由xargs分割,因为您没有使用它-d \n
或任何东西。或者find -exec {} \;
。
注意:您不能那样跑
—
ctrl-alt-delor
cd
。cd
是内置的bash,如果cd
是单独的命令,则它将更改(自己的)dir,然后退出(将您返回外壳,即与以前处于相同状态,不更改dir)。