Quero encontrar um arquivo e, em seguida, digite o diretório que o contém. Eu tentei, find /media/storage -name "Fedora" | xargs cd
mas é claro, eu o is not a directory
erro.
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 cd
não pode funcionar. cd
só pode funcionar como um shell embutido, porque precisa modificar o contexto do próprio shell. Não há como um xargs
processo filho fazer isso. IDK, se é isso que você quis dizer com "é claro", ou se o caminho que find
imprime contém espaços, que são divididos por xargs, pois você não usou -d \n
nada. Or find -exec {} \;
.
cd
assim. cd
é um bash embutido, se cd
fosse 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).