Jak znaleźć pliki z określoną podścieżką?


4

Muszę znaleźć wszystkie pliki xml, które są umieszczone w folderach o nazwie config. configMusi także znajdować się gdzieś w folderze o nazwie trunk. Na przykład interesują mnie wszystkie pliki, takie jak poniżej:

~/projects/e7/trunk/a/b/c/config/foo.xml
~/projects/d/trunk/config/bar.xml
~/projects/trunk/config/other.xml
~/projects/e/e/e/trunk/e/e/e/e/e/e/e/e/config/eeeee.xml

Próbowałem findpolecenia:

find ~/projects -regex "*/trunk/*/config/*.xml"

, ale dane wyjściowe były puste. Jaki jest właściwy sposób na znalezienie wymaganych plików?


Potrzebujesz, -regexjeśli chcesz się upewnić, że configzwracane są tylko pliki z katalogu, chyba że możesz zagwarantować, że żaden katalog nie configma podkatalogów (które mają *.xmlw swoim drzewie).
Hauke ​​Laging

Odpowiedzi:


12

To nie jest wyrażenie regularne. W przypadku globów -pathzamiast tego należy użyć predykatu.


1
Dziękuję Ci. Działafind ~/projects -path "*/trunk*/config/*.xml"
Krosno

3

Nie jestem pewien, co chcesz zrobić z plikami po ich znalezieniu, ale do użytku interaktywnego zshużyłbym czegoś takiego:

ls **/trunk/**/config/*.xml

Właściwie chciałbym zajrzeć do niektórych plików z otrzymanej listy. Po twojej odpowiedzi zainteresowałem się zshi zainstalowałem ją. Ale niestety twój wiersz poleceń nie działał. Próbowałem zmodyfikować twoje polecenie (na przykład ls ~/projects '**/trunk/**/config/*.xml' --recursive), ale bezskutecznie.
Krosno

1
Ach zapomniałem, zshnie zrobić wiele z domyślnymi ustawieniami, należy umieścić setopt EXTENDED_GLOBw ~/.zshrc.
phunehehe

Możesz rzucić okiem na oh-my-zsh lub my zshrc .
phunehehe
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.