Muszę znaleźć wszystkie pliki xml, które są umieszczone w folderach o nazwie config
. config
Musi 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 find
polecenia:
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?
find
grep
regular-expression
console
file-search
Warsztat tkacki
źródło
źródło
-regex
jeśli chcesz się upewnić, żeconfig
zwracane są tylko pliki z katalogu, chyba że możesz zagwarantować, że żaden katalog nieconfig
ma podkatalogów (które mają*.xml
w swoim drzewie).Odpowiedzi:
To nie jest wyrażenie regularne. W przypadku globów
-path
zamiast tego należy użyć predykatu.źródło
find ~/projects -path "*/trunk*/config/*.xml"
Nie jestem pewien, co chcesz zrobić z plikami po ich znalezieniu, ale do użytku interaktywnego
zsh
użyłbym czegoś takiego:źródło
zsh
i zainstalowałem ją. Ale niestety twój wiersz poleceń nie działał. Próbowałem zmodyfikować twoje polecenie (na przykładls ~/projects '**/trunk/**/config/*.xml' --recursive
), ale bezskutecznie.zsh
nie zrobić wiele z domyślnymi ustawieniami, należy umieścićsetopt EXTENDED_GLOB
w~/.zshrc
.