Muszę znaleźć wszystkie katalogi zawierające określoną postać w ich nazwie i wydrukować je.
Więc jeśli mam katalogi:
abc cde fgh
I szukam „c”, powinienem uzyskać:
abc
cde
Muszę znaleźć wszystkie katalogi zawierające określoną postać w ich nazwie i wydrukować je.
Więc jeśli mam katalogi:
abc cde fgh
I szukam „c”, powinienem uzyskać:
abc
cde
Odpowiedzi:
Następujące polecenia wykonują wymagane zapytanie:
find -name "*c*" -type d
-name "*c*" - z nazwą zawiera literę c-type d - które są katalogiemMożesz uruchomić polecenie w innym katalogu ( /full/path/to/dir), używając:
find /full/path/to/dir -name "*c*" -type d
Więcej informacji Polecenie znajdowania nixCraft
Jeśli globstarjest włączony, możesz z niego korzystać
for d in **/*c*/; do echo $d; done
Pierwszy **będzie pasował do dowolnych ścieżek podkatalogu. Następnie *c*/z dopasowanymi folderami ze znakiem c
Jeśli nie jest włączony, możesz go włączyć za pomocą shopt -s globstar
globstar
- Jeśli jest ustawiony, wzorzec
**użyty w kontekście rozszerzenia nazwy pliku będzie pasował do wszystkich plików i zero lub więcej katalogów i podkatalogów. Jeśli po wzorcu występuje a/, tylko katalogi i podkatalogi są zgodne.
-printjest konieczne, jest to akcja domyślna. Ponadto, aby rozpocząć tylko od bieżącego katalogu, nie można podać ścieżki, ponieważ.jest to ścieżka domyślna. Dobra odpowiedź. Symbole wieloznaczne mogą być pułapką, jak w tym pytaniu , cytowanie ich jest tutaj bardzo ważne.