Faça um loop sobre os arquivos e mova-os para seus respectivos diretórios,
for FILE in *; do
if [[ -f "$FILE" ]]; then
echo mv "$FILE" "dir${FILE##file}";
fi
done
-
if [[ -f "$FILE" ]]; then, verifique o$FILEse for um arquivo-fnão é um diretório-d. -
${FILE##file}, (cut-up-last-prefix) retirafileprefix do fileName e mantém apenas as partes numéricas. - Você precisa pedalar de
echopara execução a seco para ter movimento real.
Exemplo de saída:
file0 --> dir0
file1 --> dir1
file2 --> dir2
file3 --> dir3
Atualização:
Caso seu nome de arquivo tenha um sufixo como file##.xyz , você pode usar o script da seguinte forma:
for FILE in *; do
if [[ -f "$FILE" ]]; then
dname="${FILE##file}";
echo mv "$FILE" "dir${dname%.inp}";
fi
done
Esta parte ${dname%.inp} do código (recortado-primeiro-sufixo) retira .inp do final do nome do arquivo, o que ${FILE##file} parte já tira seu prefixo file antes, portanto, haverá apenas peça numérica produzir.
Ou até mesmo você pode usar da seguinte maneira.
for FILE in *; do
if [[ -f "$FILE" ]]; then
echo mv "$FILE" "dir${FILE//[^0-9]/}";
fi
done