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
.
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.
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ę.
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
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
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/*
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!
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.
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 }
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}'
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
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