Я хочу знайти файл, а потім увійти в каталог, що містить його. Я намагався, find /media/storage -name "Fedora" | xargs cd
але, звичайно, я is not a directory
помилка.
Як я можу ввести його батьківський каталог за допомогою однорядкової команди?
shopt -s globstar
, ви могли б cd /media/storage/**/Fedora
, але це не перестає оцінювати глобус під час першого матчу (тому це повільніше, ніж рішення steeldriver. Для інтерактивного використання, що зазвичай я б робив - це досягти миші та скопіювати / вставити ім'я каталогу, (і alt + backspace, як потрібно, щоб зняти компоненти контуру шляху, які я не хотів), але якщо ви багато цього зробите, я думаю, що функцію оболонки варто було б зробити.
xargs cd
не може працювати. cd
може працювати лише як вбудована оболонка, оскільки вона має змінювати контекст самої оболонки. Там немає ніякого способу , яким xargs
процес дитини може зробити це. IDK, якщо це те, що ви мали на увазі під собою "звичайно", або якщо шлях, який find
друкує, містить пробіли, які розділені на xargs, оскільки ви нічого не використовували -d \n
. Або find -exec {} \;
.
cd
. cd
це вбудований баш, якби cd
була окрема команда, то вона змінила б (власний) dir, а потім кинула (повернула вас до оболонки, тобто в тому ж стані, що і раніше, без зміни dir).