Chcę znaleźć plik, a następnie wejść do katalogu zawierającego go. Próbowałem, find /media/storage -name "Fedora" | xargs cdale oczywiście is not a directorypopełniłem błąd.
Jak wprowadzić katalog nadrzędny za pomocą polecenia w jednym wierszu?
shopt -s globstar, możesz cd /media/storage/**/Fedora, ale to nie przestaje oceniać globu przy pierwszym dopasowaniu (więc jest wolniejsze niż rozwiązanie steeldriver. W przypadku użycia interaktywnego zwykle sięgam po mysz i kopiuję / wklejam nazwę katalogu, (i alt + backspace w razie potrzeby, aby usunąć komponenty ścieżki końcowej, których nie chciałem), ale jeśli robisz to dużo, wydaje mi się, że warto zastosować funkcję powłoki.
xargs cdprawdopodobnie nie może działać. cdmoże działać tylko jako wbudowana powłoka, ponieważ musi modyfikować kontekst samej powłoki. Nie ma możliwości, aby xargsproces potomny mógł to zrobić. IDK, jeśli to właśnie rozumiesz przez „oczywiście”, lub jeśli finddrukowana ścieżka zawiera spacje, które są podzielone przez xargs, ponieważ nie używałeś -d \nlub nic. Lub find -exec {} \;.
cd. cdto wbudowane bash, gdyby cdbyły osobnym poleceniem, to zmieniłoby (własny) katalog, a następnie zakończyłoby (powrót do powłoki, czyli w takim samym stanie jak poprzednio, bez zmiany katalogu).