Remove arquivos que possuem uma certa sintaxe

0

Eu tenho alguns arquivos que seguem esta sintaxe:

  • _aaaa-mm-dd_hhhmmm.

Exemplo:

  • _2010-01-01_00h10m.
  • _2010-01-01_01h10m.
  • _2010-01-01_02h10m.
  • _2010-01-01_03h10m.
  • ...
  • _2010-01-01_23h10m.
  • _2010-02-01_00h10m.
  • _2010-02-01_01h10m.
  • _2010-02-01_02h10m.
  • ...
  • _2010-02-01_23h10m.
  • ...
  • _2010-12-01_23h10m.

Eu gostaria de manter apenas esses arquivos

  • _2010-01-01_00h10m.
  • _2010-02-01_00h10m.
  • _2010-03-01_00h10m.
  • ...
  • _2010-12-01_00h10m.

e exclua os outros. ou talvez mova-os para um subdiretório para estar seguro ...

Alguém tem um on-liner inteligente para esse desafio?

Obrigado, Udo

    
por udo 23.01.2011 / 19:09

2 respostas

2

No bash:

shopt -s extglob
rm !(*_2010-??-01_00h10m.*)
    
por 23.01.2011 / 19:52
1

maneira muito ingênua

mkdir keep_these
mkdir remove_these
mv *_00h10m* keep_these
mv *.* remove_these

ou um oneliner

ls * | grep -v "_00h10m" | while read a; do mv $a /tmp; done
    
por 23.01.2011 / 19:31