locate -i nohup.out | xargs -d '\n' -L1 -p rm
Locate 출력의 각 줄은 xargs의 인수로 처리되므로 와 ? 도 -L1
동일 합니다.-n 1
답변1
매뉴얼에서:
-L max-lines
명령줄당 최대 max-lines 공백이 아닌 입력 줄을 사용합니다. 후행 공백으로 인해 입력 줄이 논리적으로 다음 입력 줄로 계속됩니다. -x를 의미합니다.-n max-args
명령줄당 최대 max-args개의 인수를 사용합니다. 크기가 초과되면(-s 옵션 참조), -x 옵션이 제공되지 않는 한 max-args보다 적은 인수가 사용되며, 이 경우 xargs가 종료됩니다.-d delim
항목은 지정된 문자로 종료됩니다. [...]
이것과 나의 이해를 바탕으로, 귀하의 경우 -L1
전달된 인수에서 구분 기호를 공백에서 (개행)으로 변경하여 -n1
동등하게 만들고1
\n
-d
예를 들어, -d
인수가 없으면 위치 출력에 공백이 있으면 행이 두 개의 인수로 분할되므로 rm with 의 두 가지 다른 용도가 사용되지만 -n1
여전히 하나의 인수와 하나의 명령으로 처리됩니다.-L1
답변2
설명서를 읽어보니 -L
필터 에 차이가 있는 것 같습니다.공백이 아닌줄, -n
아니. 공백만 포함하는 줄은 출력되지 않는다고 가정하므로 locate
이 사용 사례에서는 기능적으로 동일해야 합니다.
답변3
-n
공백으로 분할, -L
개행으로 분할
따라서 서로 다른 결과가 생성됩니다.
printf '1 2\n3 4\n' | xargs -L1 echo
행별로 분할하므로 다음과 같습니다.
echo 1 2
echo 3 4
출력:
1 2
3 4
하지만:
printf '1 2\n3 4\n' | xargs -n1 echo
공백으로 분할되므로 다음과 같습니다.
echo 1
echo 2
echo 3
echo 4
그리고 다음을 생산합니다:
1
2
3
4
답변4
옵션 -L은 XSI 확장이므로 임베디드 시스템에 있을 필요가 없습니다.
-n 옵션은 기본 표준의 일부이며 항상 유효합니다.
참조 표준을 참조하십시오.http://pubs.opengroup.org/onlinepubs/9699919799/utilities/xargs.html
일부 구현에서는 공백으로 끝나는 줄의 동작을 전환할 수도 있지만, 다른 구현에서는 -L 옵션 지정 여부에 관계없이 공백으로 끝나는 줄을 연결할 수도 있습니다.