Como mover arquivos com extensões específicas para diretórios recém-criados

1

Eu quero mv arquivos com extensões específicas para diretórios recém-criados. Este script move arquivos com todas as extensões em todas as pastas recém-criadas, o que não é a intenção. Em vez disso, ele deve mover arquivos específicos da extensão para pastas específicas. Como posso conseguir isso?

for i in 1 2 3
do
    mkdir -p backup/ch0${i}
    if [ $? -eq ]; then
        echo "directory backup/ch0${i} created"
        for j in c h sh
        do
            count=0
            count='expr $count + 1'
            if [ $count==i ]; then
                cp /home/owner/*.${j} backup/ch0${i}
                if [ $count!=i ]; then
                    continue;
                elif [ $? -ne 0 ]; then
                    break 2;
                fi
        done
    else
        echo "could not back up directory!!"
    fi 
done
    
por CuriousCoder 07.02.2011 / 15:08

2 respostas

2

Isso deve funcionar:

backup_extensions()
{
    count=0
    while [ -n "$1" ]
    do
        let count+=1
        mkdir -p backup/ch0${count}
        cp /home/owner/*.${1} backup/ch0${count} || return 2
        shift
    done
}

backup_extensions c h sh
    
por 07.02.2011 / 16:48
1

Eu não verifiquei isso, mas ele deve fazer o trabalho.

backups=( 1:c 2:h 3:sh )

for set in "${backups[@]}"; do
 IFS=":" read dir_bkup file_ext <<< "$set"
 if ! mkdir -p "backup/ch0$dir_bkup"; then
  echo  "Could not create "backup/ch0$dir_bkup. Skipping"
  continue
 fi
 cp "/home/owner/"*".$file_ext" "backup/$dir_bkup/"
done
    
por 07.02.2011 / 16:38