Outra descoberta sem regex
find . -maxdepth 2 -type d -name '*.*' ! -name '.*'
Como encontro todas as pastas que contêm um. no nome do arquivo? Eu tentei o seguinte, mas listou todas as pastas, não o que eu queria; encontrar. -maxdepth 2 -tipo d -ipath ". "
Parece que tenho muitas pastas com o nome de algo assim; Brain.Dead.1990.1080p.BluRay.x264-HD4U[rarbg]
e isso é simplesmente feio para mim. Eu gostaria de listá-los e, em seguida, editar seus nomes para algo mais legível.
Alguma pista?
find . -maxdepth 2 -type d -name '*.*'
Informa qualquer diretório com .
em seu nome, incluindo .
, ./user/.config
, ./.foo.d
e ./.foo/bar.baz
.
find . -maxdepth 2 -type d -name '?*.*'
Procuraria .
na parte após o primeiro caractere, portanto, corresponderia a .foo.d
, mas não a .config
ou .
.
find . -maxdepth 2 -type d -name '[!.]*.*'
Omitiria dirs ocultos (aqueles cujo nome começa com .
), mas ainda encontraria diretórios não ocultos dentro de diretórios ocultos (encontraria ./.foo/foo.bar
).
find . -maxdepth 2 -name '.?*' -prune -o -type d -name '?*.*' -print
Não percorrer nem reportar diretório oculto.
A única parte fora do padrão é o -maxdepth 2
que você já está usando. O equivalente padrão seria:
find . -name '.?*' -prune -o \
\( ! -path './*/*' -o -prune \) \
-type d -name '?*.*' -print
Você pode usar uma expressão regular, se sua versão de find
suportar isso:
find . -maxdepth 2 -type d -regex '.*/[^./][^/]*\.[^/]*'
Corresponde a qualquer diretório (com profundidade máxima de dois) cujo nome comece com qualquer caractere diferente de "." e contenha um "." em qualquer outra posição.
Tags command-line linux