Jest to podobne do tego pytania , ale chcę dołączyć ścieżkę względem bieżącego katalogu do unixa. Jeśli wykonam następujące czynności:
ls -LR | grep .txt
Nie obejmuje pełnych ścieżek. Na przykład mam następującą strukturę katalogów:
test1/file.txt
test2/file1.txt
test2/file2.txt
Powyższy kod zwróci:
file.txt
file1.txt
file2.txt
Jak mogę uzyskać dołączanie ścieżek względem bieżącego katalogu przy użyciu standardowych poleceń Uniksa?
find
lubtree
. Przesyłam do urządzenia z Androidem, na którym wydaje mi się, że mam tylkols
i żadne z tych innych narzędzi: /Odpowiedzi:
Użyj znajdź:
W systemach korzystających z GNU find, podobnie jak większość dystrybucji GNU / Linux, możesz pominąć -print.
źródło
find $(pwd) -name \*.txt
-path "*docs/*.txt"
zamiast-name
.-wholename
jest taki sam jak-path
-type f
do zwracania tylko plików, a nie katalogów, dowiązań symbolicznych itp.-name "*.txt"
NIE będzie pasowaćfile.TXT
- zawsze używaj-iname "*.txt"
zamiast tego, bez rozróżniania wielkości liter.Użyj
tree
, z-f
(pełna ścieżka) i-i
(bez linii wcięcia):Następnie możesz użyć,
grep
aby odfiltrować te, które chcesz.Jeśli polecenie nie zostanie znalezione, możesz je zainstalować:
Wpisz następujące polecenie, aby zainstalować polecenie drzewa w systemach RHEL / CentOS i Fedora:
Jeśli używasz Debian / Ubuntu, Mint Linux wpisz następujące polecenie w swoim terminalu:
źródło
Spróbować
find
. Możesz to sprawdzić dokładnie na stronie podręcznika, ale wygląda to tak:find [start directory] -name [what to find]
tak dla twojego przykładu
find . -name "*.txt"
powinien dać ci to, czego chcesz.
źródło
Zamiast tego możesz użyć find:
źródło
To załatwia sprawę:
ls -R1 $PWD | while read l; do case $l in *:) d=${l%:};; "") d=;; *) echo "$d/$l";; esac; done | grep -i ".txt"
Ale czyni to poprzez „grzeszenie” przy analizie
ls
, co jest uważane przez społeczności GNU i Ghostscript za złą formę.źródło
ls
ponieważ zwykle prowadzi do błędów. To zdanie próbowało to zawołać. Zawierał również żart, który usunąłem.„sed” usunie „twoja_ścieżka” ze wszystkich wyników „znajdź”. I otrzymujesz względem ścieżki „DIR”.
źródło
Aby uzyskać rzeczywistą pełną nazwę ścieżki żądanych plików za pomocą polecenia find, użyj go z poleceniem pwd:
źródło
Oto skrypt Perla:
stosowanie:
źródło
Możesz utworzyć funkcję powłoki, np. W swoim
.zshrc
lub.bashrc
:Oczywiście pierwszy działałby tylko na pojedynczych plikach.
źródło
Znajdź w systemie plików plik o nazwie „filename”, rozpoczynając wyszukiwanie od katalogu głównego „/”. „Nazwa pliku”
źródło
Jeśli chcesz zachować szczegóły w pliku wyjściowym, takie jak rozmiar pliku itp., Powinno to działać.
źródło
W skorupce ryby możesz to zrobić, aby wyświetlić rekursywnie wszystkie pliki pdf, w tym te w bieżącym katalogu:
Po prostu usuń „pdf”, jeśli chcesz pliki dowolnego typu.
źródło
Możesz zaimplementować tę funkcję w ten sposób
Po pierwsze, używając polecenia ls wskazanego na docelowy katalog. Później za pomocą polecenia find odfiltruj z niego wynik. Z twojego przypadku wygląda to tak - zawsze nazwa pliku zaczyna się od słowa
file***.txt
źródło
W mycase, z poleceniem drzewa
Względna ścieżka dostępu
Absolutna ścieżka
źródło