Jak mogę wyświetlić listę plików ze ścieżką bezwzględną w Linuksie? [zamknięte]

Chcę wygenerować rekurencyjne listy plików z pełnymi ścieżkami

/home/ken/foo/bar

Ale z tego co widzę zarówno ls jak i find dają tylko relatywne listy ścieżek

./foo/bar   (from the folder ken)

Wydaje się to oczywistym wymogiem, ale nie widzę niczego na stronach man find ani ls.

Author: Yamaneko, 2008-10-29

10 answers

Jeśli podasz find ścieżkę bezwzględną na początek, wyświetli ona ścieżki bezwzględne. Na przykład, aby znaleźć wszystko .pliki htaccess w bieżącym katalogu:

find `pwd` -name .htaccess

find po prostu prepends the path it was given to a relative path to the file from that path.

Greg Hewgill zasugerował również użycie pwd -P, Jeśli chcesz rozwiązać dowiązania symboliczne w bieżącym katalogu.

 213
Author: Matthew Scharley,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:02:48
readlink -f filename 

Daje pełną ścieżkę absolutną. ale jeśli plik jest dowiązaniem symbolicznym, otrzymasz ostateczną nazwę.

 167
Author: balki,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-01-02 04:45:05

Użyj tego dla dirs:

ls -d -1 $PWD/**

To dla plików:

ls -d -1 $PWD/*.*

To na wszystko:

ls -d -1 $PWD/**/*

Wzięte stąd http://www.zsh.org/mla/users/2002/msg00033.html

 94
Author: user431529,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-08-26 07:07:42

Możesz użyć

find $PWD 

In bash

 18
Author: Vinko Vrsalovic,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-29 09:27:50
ls -d $PWD/*
 11
Author: didi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-09-15 13:15:50

Jeśli podasz komendzie find ścieżkę absolutną, to wyniki zostaną wypluwane ścieżką absolutną. Tak więc z katalogu Ken jeśli miałbyś wpisać:

Find / home / ken / foo / - name bar-print
(zamiast ścieżki względnej znajdź . - name bar-print)

Powinieneś dostać:

/home / ken / foo / bar

Dlatego, jeśli chcesz ls - l i chcesz, aby zwracała ścieżkę absolutną, możesz po prostu powiedzieć komendzie find, aby wykonała ls-l na tym, co znajdzie.

Znajdź /home / ken / Foo-name bar-exec ls-l {}; \

Uwaga: Istnieje spacja pomiędzy {} a;

Dostaniesz coś takiego:

-RW-R--R-- 1 ken admin 181 Jan 27 15:49 /home/ken/foo/bar

Jeśli nie masz pewności, gdzie znajduje się plik, zawsze możesz zmienić lokalizację wyszukiwania. Dopóki ścieżka wyszukiwania zaczyna się od"/", otrzymasz w zamian ścieżkę bezwzględną. Jeśli szukasz miejsca (takiego jak/), w którym uzyskasz wiele błędów odmowy uprawnień, następnie polecam przekierowanie błędu standardowego, abyś mógł zobaczyć wyniki wyszukiwania:

Find / - name bar-exec ls-l {}; \ 2> / dev / null

(2> jest składnią powłok borne i bash, ale nie będzie działać z powłoką C. Może działać również w innych powłokach, ale wiem tylko na pewno, że działa w bourne i bash).

Mam nadzieję, że to pomoże!

 4
Author: Trudius,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-29 13:43:55

$PWD jest dobrym rozwiązaniem przez Mateusza powyżej. Jeśli chcesz, aby find drukował tylko pliki, Możesz również dodać opcję-type f, aby wyszukiwać tylko normalne pliki. Inne opcje to "d"tylko dla katalogów itd. Tak więc w Twoim przypadku byłoby (jeśli chcę szukać tylko plików z .c ext):

find $PWD -type f -name "*.c" 

Lub jeśli chcesz wszystkie pliki:

find $PWD -type f

Uwaga: nie możesz utworzyć aliasu dla powyższego polecenia, ponieważ $PWD jest automatycznie uzupełniane do katalogu domowego, gdy alias jest ustawiany przez Basha.

 2
Author: Gurpreet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-23 09:42:44
lspwd() { for i in $@; do ls -d -1 $PWD/$i; done }
 1
Author: rwilhelm,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-31 00:08:33
ls -1 | awk  -vpath=$PWD/ '{print path$1}'
 -1
Author: Albert,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-06-23 20:37:26

find / -print will do this

 -2
Author: David Arno,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-29 09:26:47