Os únicos caracteres-problema que vejo no seu script são o "
e a nova linha. Você não deve se preocupar muito com a nova linha em um nome de arquivo.
Você pode querer usar nomes de arquivos temporários diferentes, por exemplo, com $$
no nome do arquivo.
Então, como melhoria:
#!/bin/bash
TMP1=/tmp/file1.$$
TMP2=/tmp/file2.$$
find -type f -printf '%T+ %p\n' | sort | head -n 3 > $TMP1
cat $TMP1 | sed 's/"/\"/g;s/[^ ]* //;s/^/rm -i "/;s/$/\"/' >$TMP2
bash $TMP2
rm -f $TMP1 $TMP2
Isso deve lidar com as aspas no seu nome de arquivo. (nota: ainda há alguns problemas com o script. É bom fazer isso em seu próprio ambiente doméstico. E o TMP em maiúsculas não é recomendado, mas eu faço isso de qualquer maneira.)
Nota: xargs -p
não funciona quando você tem nomes de arquivos com espaços.