Você quer dizer algo assim (1 a 100)?
for i in {1..100}; do
find /home/ -name "${i}_*_*_*_*_*_*.nii" -exec cp '{}' /home/${i} \;
done
Por exemplo, arquivos começando com o número 1 para o número da pasta 1 e assim por diante ..., posso fazer isso para cada um usando o seguinte comando:
find /home/ -name '1_*_*_*_*_*_*.nii' -exec cp '{}' /home/1 ';'
No diretório de origem, execute este script:
for name in *.nii ; # find all files with a pattern and process its
do
directory="${name%%_*}/"
if [ ! -d "$directory" ]; then mkdir "$directory" ; fi # make directory if not exist
cp "$name" "$directory" ; # copy file into the directory
done
O ${name%%_*}
remove o padrão de sufixo de correspondência mais longo. Neste caso, serão todos os símbolos antes do primeiro _
. O resultado da substituição do nome 1_2_3.nii
será cp 1_2_3.nii 1/
.
Esta solução é mais flexível porque cria automaticamente as pastas necessárias e não é necessário fornecer o intervalo de prefixo de arquivos.