Tentando organizar arquivos por extensão usando um script (grep, foreach, find), mas estou sobrecarregado. Procurando conselhos [duplicado]

0

Eu quero iterar todos os arquivos no diretório de origem e colocá-los no diretório de destino.

Exemplo de lista de arquivos:

/source/folder/text.txt
/source/folder/document.pdf
/source/folder/that/is/deeper/picture.jpg
/source/folder/picture2.JPG

Após a execução do script, gostaria que a pasta de destino fosse:

/dest/folder/txt/text.txt
/dest/folder/pdf/document.pdf
/dest/folder/jpg/picture1.jpg
/dest/folder/jpg/picture2.JPG

Eu aprendi que posso encadear os comandos -exec no verso de find , mas não acho que seja isso que eu quero.

grep pode ser útil, mas como é uma linha única, acho que escrevê-la será complexo.

Um forloop parece ser o melhor caminho, mas eu não posso, para a vida de mim, descobrir como extrair o nome do arquivo.

SOURCE=/my/source/dir/

for f in $SOURCE
do
  echo $f
done

$ f parece ser apenas o diretório e não lista o nome real do arquivo.

    
por MALON 28.11.2014 / 20:58

1 resposta

1

aqui está o meu script:

#!/bin/bash
#this script sorts files according to their extensions
oldIFS=$IFS
IFS=$'\n'
(find . -type f) > /tmp/temp
for var in 'cat /tmp/temp'
do
    name='basename "$var"' ext='echo $name | cut -d'.' -f2- | cut -d'.' -f2- | cut -d'.' -f2- | cut -d'.' -f2- | cut -d'.' -f2- | cut -d'.' -f2- | cut -d'.' -f2-'
    mkdir -p $ext
    mv "$var" $ext/ 2> /dev/null
done
IFS=$oldIFS

este script não irá ordenar arquivos sem extensão

    
por Edward Torvalds 28.11.2014 / 21:26