Voglio trovare un file e quindi inserire la directory che lo contiene. Ho provato find /media/storage -name "Fedora" | xargs cd
ma, ovviamente, ho l' is not a directory
errore.
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 cd
non è possibile che funzioni. cd
può funzionare solo come shell incorporata, perché deve modificare il contesto della shell stessa. Non è possibile che un xargs
processo figlio possa farlo. IDK se questo è ciò che intendevi per "ovviamente", o se il percorso che find
stampa contiene spazi, che sono divisi da xargs poiché non hai usato -d \n
o altro. Or find -exec {} \;
.
cd
così. cd
è un bash incorporato, se cd
fosse un comando separato, allora cambierebbe (il suo) dir, e poi uscirà (ritornando alla shell, che è nello stesso stato di prima, nessun cambio di dir).