find . -maxdepth 1 -mindepth 1 -not -type f -name "Type1_201608*.xml"
Isso significa: para os arquivos no diretório atual ( . -maxdepth 1 -mindepth 1
), liste os arquivos que não são regulares ( -not -type f
) e que tenham um nome correspondente a "Type1_201608*.xml
.
Como você deseja listar apenas arquivos que correspondam a Type1_*.xml
, seu comando terá que incluir esse padrão em algum lugar! E como você quer atuar em arquivos regulares, não negue -type f
.
find . -maxdepth 1 -mindepth 1 -type f -name "Type1_*.xml" -name "Type1_201608*.xml"
Não analise a saída de find
. Use -exec
, é para isso.
find . -maxdepth 1 -mindepth 1 -type f -name "Type1_*.xml" -name "Type1_201608*.xml" -exec gzip -5 {} +
Com os shells modernos, se o padrão Type1_*.xml
não corresponder a nenhum diretório ou a qualquer link simbólico que você queira excluir, você não precisará de find
para isso. Você pode usar padrões de glob extended ksh, que são também disponíveis no bash .
shopt -s extglob
gzip -5 Type1_!(201608*).xml
Em zsh, você pode ativar padrões de globos estendidos ksh, mas também pode usar / a>.
setopt extended_glob
gzip -5 Type1_*.xml~Type1_201608*
E, em zsh, se você quiser garantir que apenas arquivos regulares sejam correspondidos, use um qualificador glob .
setopt extended_glob
gzip -5 Type1_*.xml~Type1_201608*(.)