Mover arquivos de tipo / extensão específicos de um diretório para outro?

0

Tenha uma pasta grande cheia de uma grande coleção de arquivos diferentes. Idealmente, quero mudar todos os arquivos diferentes para suas respectivas pastas; então jpg na pasta jpg, etc.

Pasta original: unsorted_files pasta de destino: jpgfolder Eu tentei

mv /home/tony/Desktop/unsorted_files/*.jpg /home/tony/Desktop/jpgfolder

Mas recebi um erro "jpgfolder" não é um diretório "

    
por IronUhlan 09.11.2017 / 16:08

2 respostas

2

Levando em conta que 1) Q disse "grande coleção ... de arquivos" - a lista de arquivos pode não caber em um buffer de linha de comando (2.084.684 bytes no sistema MY ); e 2) Nomes de arquivo podem conter caracteres engraçados (" My Stuff.jpg "); mv não é o melhor caminho. Usando find , xargs e o conhecimento seguro de que os nomes de arquivos NÃO devem conter bytes NUL (ou barras):

find /home/tony/Desktop/unsorted_files/ -maxdepth 1 -type f -iname '*.jpg' -print0 | \
    xargs -0 --no-run-if-empty echo mv --target-directory=/home/tony/Desktop/jpgfolder

Quando os comandos echo d parecerem corretos, remova o echo e deixe mv fazer o trabalho.

Se você já tiver feito mv /home/tony/Desktop/unsorted_files/*.jpg /home/tony/Desktop/jpgfolder ANTES você criou o /home/tony/Desktop/jpgfolder , nada foi perdido, mas você deve, como outras respostas disseram, mkdir -p /home/tony/Desktop/jpgfolder primeiro.

    
por waltinator 09.11.2017 / 16:52
-1

Até onde eu sei - correções são bem-vindas - mv na verdade não move arquivos, eles são renomeados. Então você está tentando renomear todos os arquivos jpg para um nome de pasta.

Eu tentaria:

rsync /home/tony/Desktop/unsorted_files/*.jpg /home/tony/Desktop/jpgfolder
    
por user258532 09.11.2017 / 16:12