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$FILE
se for um arquivo-f
não é um diretório-d
. -
${FILE##file}
, (cut-up-last-prefix) retirafile
prefix do fileName e mantém apenas as partes numéricas. - Você precisa pedalar de
echo
para 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