Sim, há provavelmente mais algumas maneiras de fazer isso, mas você provavelmente está melhor com find
, pois é muito sintonizável.
find /path/to/dir -size -100M | xargs tar cvf archive.tar
ou
tar cvf archive.tar $(find /path/to/dir -size -100M)
Se houver outros diretórios na pasta atual que você não deseja arquivar, use:
find /path/to/dir -maxdepth 1 -size -100M | xargs tar cvf archive.tar
Pelos comentários abaixo, espaços podem lançar alguns erros, mas no meu teste eles ainda parecem ter sido adicionados ao arquivo ao usar o primeiro método (um pouco estranho em si), mas se você estiver preocupado, você pode corrigir o erro. encontre o comando para substituir espaços por versões com escape.
Como sempre, existem bilhões de maneiras de fazer isso.
find /path/ -size -100M | sed 's/ /\ /g' | xargs tar cvf archive.tar
find /path/ -size -100M -exec echo '"{}"' \; | xargs tar cvf archive.tar