Recriar o diretório parece ser uma maneira bastante simples de fazer isso.
find /data1 -name MyTargetDir -type d -exec rm -rv {} \; -exec mkdir {} \;
Em vez disso, você poderia usar um subshell no exec para executar um rm -rf * (ou similar) de dentro do diretório. Mas isso parece mais problemático do que o acima. Você tem o efeito colateral de limpar o tamanho do diretório se isso já foi um problema.
Como mencionado, a recriação do diretório pode ser um grande problema. Se assim for, uma alternativa poderia ser:
find /data1 -name MyTargetDir -type d -exec bash "-c" "cd {} && rm -r -- * .*" \;
Isso tem o infeliz problema de reclamar sobre tentativas de remover "." e "..", mas deve ser seguro.
Caso contrário, você pode simplesmente optar por uma solução de script completa, como o perl.
#!/path/to/perl
use strict;
use warnings;
use File::Find;
use File::Path qw/remove_tree/;
my ($dir_to_check, $name_to_remove) = @ARGV;
find(\&wanted, $dir_to_check);
sub wanted {
if (-d and $_ eq $name_to_remove) {
remove_tree($_, {keep_root => 1});
}
}
Passe primeiro no diretório e o nome para corresponder ao segundo. Não é mais um shell one-liner, mas funciona, não destrói o diretório e não cede nenhum aviso falso.