Я хочу найти файл, а затем ввести каталог, содержащий его. Я пытался, 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это встроенный bash, если бы cdэто была отдельная команда, то он изменил бы (свой собственный) dir, а затем завершил работу (вернул вас в оболочку, которая находится в том же состоянии, что и раньше, без изменения dir).