Czy istnieje sposób uzyskania bezwzględnej ścieżki przeszukiwanego pliku?
Na przykład:
find .. -name "filename"
Daje mi wyniki, ../filename
ale chcę pełną ścieżkę.
Muszę znaleźć w katalogu nadrzędnym i jego dzieciach dla określonego pliku, którego później użyję w innym skrypcie.
Dzięki
command-line
find
JorgeeFG
źródło
źródło
Odpowiedzi:
Wypróbuj coś takiego:
źródło
$(cd ..; pwd)
. Tutaj działa OK, ale jeśli zrobię to sam w terminalu, nie mogę uzyskać katalogu nadrzędnego ... Dostaję „Bash: <katalog>: Jest katalogiem. A jeśli to zrobię$(cd ..; echo "something")
, dostaję” coś: nie polecenie "(cd ..; pwd)
( ... )
oznacza wykonanie w podpowłoce, dane wyjściowe są zapisywane na standardowe wyjście.$( ... )
oznacza „podstawienie polecenia”. Ten ostatni może być używany tak, jakby był zmiennym rozszerzeniem.Spróbuj użyć
-exec
opcjifind
:Uwaga:
readlink
drukuje wartość dowiązania symbolicznego lub kanonicznej nazwy pliku.źródło
Możesz użyć
bash
rozszerzenia tyldy, aby uzyskać ścieżkę bezwzględną do bieżącego katalogu roboczego, w ten sposóbfind
wypisuje również ścieżkę bezwzględną dla wyników:Jeśli zostanie wykonany
~/Desktop
, zostanie rozwinięty doi drukuje wyniki takie jak:
Jeśli chcesz zastosować to podejście z katalogiem nadrzędnym bieżącego katalogu roboczego , musisz to zrobić
cd
przed wywołaniemfind
:źródło
Najprostszy sposób to
źródło
find `pwd -P` -name "filename"
Również za pomocą PWD można wyświetlić pełny katalog. Pwd pokaże ci wszystkie twoje katalogi, w których się znajdujesz, jak rozszerzenie nazwy pliku. Mam nadzieję, że to pomogło.
źródło
To zadziałało dla mnie, ale zwróci tylko pierwsze wystąpienie.
Aby uzyskać pełne ścieżki dla wszystkich wystąpień (jak sugeruje Sergiy Kolodyazhnyy)
źródło
Usuwanie ostatniego komponentu katalogu z parametrem Rozszerzenie .
Przykład wykorzystania pliku map do zapisania danych wyjściowych z find w tablicy indeksowanej do późniejszego wykorzystania.
(jeśli nie podano nazwy tablicy, MAPFILE będzie domyślną nazwą tablicy).
źródło