Comando Linux mv para mover vários arquivos com diferentes extensões

3

Eu estou querendo saber se é possível usar o bash para mv de vários arquivos com extensões diferentes em um diretório, por exemplo, mv 1.png 2.jpg dir/

exceto combinar muitos arquivos

    
por user403723 17.01.2015 / 01:42

3 respostas

1

Use globs ! Um glob é um padrão que se expande para vários nomes de arquivos. Também é muito bem explicado aqui .

Por exemplo, * corresponde a qualquer string de qualquer tamanho e você pode mover todos os arquivos JPG e PNG para algum lugar com:

mv *.jpg *.png dir

Usando a opção extglob no Bash, você também pode fazer:

shopt -s extglob
mv *(*.jpg|*.png) dir
    
por 17.01.2015 / 09:46
1

A maneira mais simples seria usar uma mistura de expansão de chave e globbing

mv -iv -- *.{png,jpg} dir/

Que é expandido para

mv -iv -- *.png *.jpg dir/

Que é expandido para (todos os arquivos - incluindo dirs / symlincs - terminados em .png ou .jpg )

mv -iv -- 1.png 2.jpg ... dir/

Nota: -iv -- está incluído para segurança / verbosidade

-i, --interactive
       prompt before overwrite
-v, --verbose
       explain what is being done
[GETOPT] The special argument "--" forces an end of option-scanning 
         regardless of the scanning mode. 
         (Meaning everything after it gets treated as an argument)
    
por 17.01.2015 / 10:02
-1

sim, isso acontece.

$ tree
.
├── a.png
├── b.jpg
└── dir

1 directory, 2 files
$ mv a.png b.jpg dir
$ tree
.
└── dir
    ├── a.png
    └── b.jpg

1 directory, 2 files
$ 

mv não se importa com extensões de arquivos, tudo o que sabe é o arquivo original e o diretório de destino solicitado por você.

    
por 17.01.2015 / 02:27

Tags