Quero encontrar um arquivo e, em seguida, digite o diretório que o contém. Eu tentei, find /media/storage -name "Fedora" | xargs cdmas é claro, eu o is not a directoryerro.
Como insiro seu diretório pai com um comando de uma linha?
shopt -s globstar, você poderia cd /media/storage/**/Fedora, mas isso não para de avaliar o globo na primeira partida (portanto, é mais lento que a solução da steeldriver. Para uso interativo, o que eu normalmente faria é procurar o mouse e copiar / colar o nome do diretório, (e alt + backspace conforme necessário para retirar componentes de caminho de fuga que eu não queria), mas se você fizer muito isso eu acho uma função shell pode valer tomada.
xargs cdnão pode funcionar. cdsó pode funcionar como um shell embutido, porque precisa modificar o contexto do próprio shell. Não há como um xargsprocesso filho fazer isso. IDK, se é isso que você quis dizer com "é claro", ou se o caminho que findimprime contém espaços, que são divididos por xargs, pois você não usou -d \nnada. Or find -exec {} \;.
cdassim. cdé um bash embutido, se cdfosse um comando separado, ele mudará o (próprio) dir e, em seguida, sairá (retornando você ao shell, que está no mesmo estado de antes, sem alteração de dir).