xargs 없이 find 명령을 실행한다고 가정해 보겠습니다.
find . -iname 'connect*' > cat output.txt
질문 1. xargs 명령을 사용하여 find 명령의 출력을 텍스트 파일에 복사하려면 어떻게 해야 합니까? 2. 명령을 사용하는 것의 장점은 무엇 xargs
입니까?>
다음 중 하나를 시도했지만 올바른 것 같지 않습니다.
find . -iname 'connect*' | xargs -t cat > output.txt
답변1
xargs
표준 입력 및 명령줄에서 문자열을 가져옵니다. stdin의 문자열을 명령줄에 대한 인수로 사용하여 명령줄을 실행합니다. 기본적으로 간접 참조를 수행하고 있습니다. 파일 이름 목록(예를 들어 생성됨)이 있는 경우 여러 텍스트 파일에서 상위 20개 단어 빈도 목록을 가져오는 것과 마찬가지로 find
를 사용할 수 있습니다 .xargs
find . -name '*.txt' | xargs cat | tr -s '[:blank:]' '\n' | sort | uniq -c | sort -k1.1nr | head -20
질문 1의 작업을 수행할 가치가 있는지 잘 모르겠습니다. 나는 그것이 이루어질 수 있다고 확신하는데, 왜 귀찮게 합니까? 이것이 질문 2에 대한 답입니다. 성능이나 의도의 명확성 측면에서 이점이 없습니다.
일반적으로 사용의 장점은 xargs
표준 입력에 넣을 파일 이름을 결정하는 복잡한 작업을 수행할 수 있다는 것입니다. find
생성 시간이나 여러 이름 등을 추가할 수 있습니다 . 파일 이름의 정적 목록만 있으면 얻을 수 있는 이점이 무효화됩니다 . xargs
루프에서 실행될 cat
명령을 사용하거나 실행하는 것이 더 좋습니다.xargs
답변2
xargs는 출력 라인에서 명령을 실행하는 데 도움이 됩니다. 예를 들면 다음과 같습니다.
find . -name '*.mp3' | xargs mp3info
find로 찾은 각 파일에 대해(예: 출력 행)
mp3info <filename>
처형당하다
사용하고 싶다면모두find 출력의 경우 xargs가 전혀 필요하지 않습니다.