Mover arquivos sem extensão com mv

3

Eu tenho uma pasta com imagens (png, bmp, jpg) e arquivos sem extensão.

Não consigo descobrir como mover apenas os arquivos sem extensão. Eles são todos arquivos numerados aleatoriamente.

    
por Dominique 03.05.2014 / 00:07

2 respostas

6

Com bash

shopt -s extglob
mv -- !(*.jpg|*.png|*.bmp) targetdir/
    
por 03.05.2014 / 00:24
1

Usando o operador global !(...) ksh extended glob para negação, assim em ksh , zsh -o kshglob ou bash -O extglob :

rm -- !(*.*) /dest

Move os arquivos cujo nome não contém um ponto (observe que em shells que não sejam zsh , se não houver tal arquivo, ele ainda poderá mover o arquivo chamado !(*.*) , mesmo que esse arquivo contenha um ponto ).

Usando zsh ' ^ extended glob operator para negação, portanto, em zsh -o extendedglob :

rm -- ^*.* /dest

Em todos os itens acima, arquivos ocultos não seriam movidos, primeiro porque seu nome contém um ponto (eles começam com um ponto), mas também porque arquivos ocultos são excluídos de globs, a menos que o próprio glob comece com um literal . .

Se você quiser também mover .foo arquivos, mas não .foo.png , você pode fazer:

mv -- ^?*.*(D) /dest # with zsh -o extended-glob

mv -- !(?*.*) /dest # with bash -O extglob -O dotglob
                    # or   zsh -o kshglob -o dotglob -o nobareglobqual
                    # or   env FIGNORE='@(.|..)' ksh93

mv -- @(.|)+([^.]) /dest # with bash -O extglob or AT&T ksh
    
por 04.10.2016 / 12:50