Я хочу знайти файл, а потім увійти в каталог, що містить його. Я намагався, 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).