Voglio trovare un file e quindi inserire la directory che lo contiene. Ho provato find /media/storage -name "Fedora" | xargs cdma, ovviamente, ho l' is not a directoryerrore.
Come posso inserire la sua directory principale con un comando a una riga?
shopt -s globstar, potresti cd /media/storage/**/Fedora, ma ciò non smette di valutare il glob alla prima corrispondenza (quindi è più lento della soluzione di Steeldriver. Per un uso interattivo, ciò che normalmente farei è raggiungere il mouse e copiare / incollare il nome della directory, (e alt + backspace se necessario per eliminare i componenti del percorso finale che non volevo), ma se lo fai molto immagino che valga la pena fare una funzione shell.
xargs cdnon è possibile che funzioni. cdpuò funzionare solo come shell incorporata, perché deve modificare il contesto della shell stessa. Non è possibile che un xargsprocesso figlio possa farlo. IDK se questo è ciò che intendevi per "ovviamente", o se il percorso che findstampa contiene spazi, che sono divisi da xargs poiché non hai usato -d \no altro. Or find -exec {} \;.
cdcosì. cdè un bash incorporato, se cdfosse un comando separato, allora cambierebbe (il suo) dir, e poi uscirà (ritornando alla shell, che è nello stesso stato di prima, nessun cambio di dir).