Se você quiser deletar todos os arquivos, então, em um sistema GNU, você poderia fazer:
cd -P -- "$destdir" &&
printf '%sawk -v RS='shuffle() REPLY=$RANDOM
rm -f file_<->_[a-d].bin(.+shuffle[1,1024])
' -v ORS='cd -P -- "$destdir" &&
printf '%sawk -v RS='shuffle() REPLY=$RANDOM
rm -f file_<->_[a-d].bin(.+shuffle[1,1024])
' -v ORS='%pre%' -v n=1024 '/regexp/ {print; if (--n == 0) exit}'
' * | # print the list of files as zero terminated records
sort -Rz | # random sort (shuffle) the zero terminated records
xargs -r0 rm -f # pass the input if non-empty (-r) understood as 0-terminated
# records (-0) as arguments to rm -f
' -v n=1024 '/regexp/ {print; if (--n == 0) exit}'
' * | # print the list of files as zero terminated records
sort -Rz | # random sort (shuffle) the zero terminated records
xargs -r0 rm -f # pass the input if non-empty (-r) understood as 0-terminated
# records (-0) as arguments to rm -f
Se você quiser excluir apenas um certo número daqueles que correspondem a um regexp, insira algo assim entre o sort
e o xargs
:
Com zsh
, você poderia fazer: