Znalazłem, zapytałem to pytanie na złym miejscu wymiany stosu.
Aby znaleźć pliki zaczynające się od określonej ścieżki, mogę użyć find <path> ...
. Jeśli chcę znaleźć „w górę”, tj. W katalogu nadrzędnym i jest to rodzic, i… czy istnieje równoważne narzędzie?
Przypadek użycia to znajomość odpowiedniej liczby kropek (../../x.txt lub ../../../x.txt?) Do użycia np. plik makefile zawierający niektóre wspólne pliki makefile działa gdzieś w górę.
Przeznaczenie dla takiej struktury folderów:
/
/abc
/abc/dce/efg/ghi
/abc/dce/efg2
$ cd /abc/dce/efg/ghi
$ touch ../../x.txt
$ upfind . -name X*
../../x.txt
$ upfind . -name Y* || echo "not found"
not found
$ touch /abc/dce/efg2/x.txt
$ upfind . -name Y* || echo "not found"
not found
$
Krótko mówiąc:
- powinien szukać w tym folderze, jest rodzicem, rodzicem rodzica ...
- ale nie w żadnym z ich rodzeństwa (tak jak „znajdź”)
- powinien zgłosić znalezione pliki względem bieżącej ścieżki
Odpowiedzi:
Możesz po prostu podzielić ścieżkę na jej składowe węzły katalogu i wyszukiwać każdy dyskretnie. To jest
bash
scenariusz.biegać
upfind $HOME/zt" "Y*"
... co daje następujące wyjściegdy YABBA istnieje w / , / home / użytkownik , / home / user / zt
źródło
Możesz użyć tego prostego skryptu. Przechodzi w górę drzewa katalogów i wyszukuje określone pliki.
Stosowanie:
źródło