O seguinte deve fazer o truque: -
today='date +%Y-%m-%d'
ls -A src/ | while f='line'; do if [ ! -f "dst/*/$f" ]; \
then mkdir -p "dst/$today"; cp "src/$f" "dst/$today/$f"; fi; done
Notas: -
- Comparado com a alternativa de
for f in src/*; ..., usarlsretira o diretório do nome da fonte e-Ainclui nomes de arquivos que começam com.,. - Se houver subdiretórios em
src/, você precisará usarfindno diretório de origem e removersrc/do nome com-printf %P\n. - Se você não tiver o comando
line, poderá usarwhile read f; ..., mas isso não funcionará para nomes de arquivos com espaço em branco inicial e final (mesmolinefalhará se o nome do arquivo contiver uma nova linha caractere - para isso você precisaria usarfind -print0exargs -0).