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 globstar
jest 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.
-print
jest 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.