But the following command doesn't work in the way I hope.
locate -i nohup.out | xargs -0 -n 1 -p rm -i
Claro que se você estiver usando xargs -0 , então você deve combinar isso com locate -0 .
It doesn't prompt each file to be removed and ask for my permission. I wonder why
xargs deve ler a entrada de /dev/tty ao avisar você. Ele funciona dessa forma para que não haja conflito entre o uso do stdin de xargs para ler argumentos de locate e a leitura de respostas para a opção -p .
No entanto, você está usando xargs para executar rm -i . O comando rm -i também quer ler sua entrada, que será lida de stdin. Por isso, consome parte da entrada de xargs e as coisas não funcionam como você espera.
and what command works as I hope?
Se você estiver usando o Bash, essa é uma opção:
xargs -a <(locate -0 -i nohup.out) -0 -n 1 -p rm -i
No entanto, você também pode fazer tudo ao encontrar:
find / -depth -name nohup.out -ok rm -i '{}' ';'
Alterar ';' para '+' para excluir mais de um arquivo por vez. Esse requisito e as várias maneiras de resolver esse problema são explicados em o manual Texinfo para findutils .