Saya ingin mencari file dan kemudian memasukkan direktori yang berisi itu. Saya mencoba find /media/storage -name "Fedora" | xargs cd
tetapi tentu saja, saya is not a directory
kesalahannya.
Bagaimana cara memasukkan direktori induknya dengan perintah satu baris?
shopt -s globstar
, Anda bisa cd /media/storage/**/Fedora
, tetapi itu tidak berhenti mengevaluasi glob pada pertandingan pertama (jadi itu lebih lambat daripada solusi steeldriver. Untuk penggunaan interaktif, apa yang biasanya saya lakukan adalah meraih mouse dan menyalin / menempelkan nama direktori, (dan alt + backspace yang diperlukan untuk menanggalkan komponen path trailing yang tidak saya inginkan), tetapi jika Anda sering melakukan ini, saya rasa fungsi shell bisa bernilai.
xargs cd
tidak mungkin bekerja. cd
hanya dapat berfungsi sebagai shell builtin, karena harus memodifikasi konteks shell itu sendiri. Tidak mungkin xargs
proses anak dapat melakukannya. IDK jika itu yang Anda maksud dengan "tentu saja", atau jika jalur yang find
mencetak berisi spasi, yang dipisahkan oleh xargs karena Anda tidak menggunakan -d \n
atau apa pun. Atau find -exec {} \;
.
cd
seperti itu. cd
adalah sebuah bash yang dibangun, jika cd
merupakan perintah yang terpisah, maka itu akan mengubah dir (miliknya), dan kemudian berhenti (mengembalikan Anda ke shell, yang berada dalam keadaan yang sama seperti sebelumnya, tidak ada perubahan dir).