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 .