
Eu tenho um diretório de 150 arquivos que queria dividir em subdiretórios de 25 arquivos cada: 1-25 em dir1, 26-50 em dir2 e assim por diante. Como posso fazer isso?
dir1/fre_4_g2_c3654214.h3
dir1/fre_4_g2_c0585433.h3
dir1/fre_4_g2_c3565415.h3
... e assim por diante
e o que eu gostaria de fazer é
dir1/fre_4_g2_c3654214.h3
dir2/fre_4_g2_c0585433.h3
dir3/fre_4_g2_c3565415.h3
Responder1
Isso classificará os arquivos alfanumericamente e moverá os primeiros 25 arquivos para o subdiretório dir0
, os próximos 25 para dir1
, etc., até que todos os arquivos sejam movidos:
n=0; for f in *; do d="dir$((n++ / 25))"; mkdir -p "$d"; mv -- "$f" "$d/$f"; done
Para quem prefere seus comandos espalhados por várias linhas:
n=0
for f in *
do
d="dir$((n++ / 25))"
mkdir -p "$d"
mv -- "$f" "$d/$f"
done
Isso funcionará em ksh
ou bash
.