De Procure e remova arquivos com segurança
locate -i nohup.out | xargs -d '\n' -L1 -p rm
Cada linha na saída de locate é tratada como um argumento por xargs, então são -L1
e são -n 1
iguais?
De Procure e remova arquivos com segurança
locate -i nohup.out | xargs -d '\n' -L1 -p rm
Cada linha na saída de locate é tratada como um argumento por xargs, então são -L1
e são -n 1
iguais?
Do manual:
Com base nisso e no meu entendimento, no seu caso
-L1
e-n1
são equivalentes tanto pelo argumento1
passado quanto pelo delimitador alterado de espaço em branco para\n
(nova linha) pelo argumento-d
Por exemplo, sem o
-d
argumento, se você tivesse um espaço em branco em sua saída de localização, essa linha seria dividida em dois argumentos e, portanto, 2 usos diferentes de rm com-n1
, enquanto ainda seria tratado como um argumento e apenas um comando com-L1
Parece que a diferença, com base na leitura do manual, é que
-L
filtra as linhas não em branco , enquanto-n
não o faz. Presumindo quelocate
nunca produzirá uma linha contendo apenas espaços em branco, eles devem ser funcionalmente idênticos neste caso de uso.-n
divide em qualquer espaço em branco,-L
divide em novas linhasEles, portanto, produzem resultados diferentes:
divide por linha e, portanto, é equivalente a:
que emite:
No entanto:
divide em qualquer espaço em branco e, portanto, é equivalente a:
e produz em vez disso:
Relacionado: https://stackoverflow.com/questions/6527004/why-does-xargs-l-yield-the-right-format-while-xargs-n-doesnt
A opção -L é uma extensão XSI e não precisa estar presente em sistemas embarcados.
A opção -n faz parte do padrão básico e sempre funciona.
Veja o padrão como referência: http://pubs.opengroup.org/onlinepubs/9699919799/utilities/xargs.html
Observe que algumas implementações também podem mudar o comportamento para linhas que terminam em espaços, enquanto outras podem concatenar uma linha que termina em espaço, independentemente de a opção -L ter sido especificada.