Padrões de nome de arquivo do Ksh são suficientes:
# files with 2013
ls -d -- *2013*
# files without 2013
ls -d -- !(*2013*)
Referência
Se o seu shell é bash, você precisa executar shopt -s extglob
antes de poder usar esse padrão (você pode colocá-lo em .bashrc
). Se o seu shell é zsh, você precisa executar setopt ksh_glob
(você pode colocá-lo no seu .zshrc
). O Zsh também oferece ls -d -- ^*2013*
, que requer um setopt extended_glob
preliminar.
Dependendo do que você está fazendo com esses nomes de arquivos, ls
pode não ser o comando correto a ser usado. Para armazená-los em uma matriz
filenames=( !(*2013*) )
for f in "${filenames[@]}"; do ...; done