아래와 같이 일부 파일의 빠른 체크섬을 수행하는 명령을 실행하고 있습니다.
find / -type f -ctime +30 -mtime +30 -atime +30 -exec md5sum {} \; | xargs -P 4
병렬로 실행하려고 하는데
xargs -P 4
이제 find 명령을 개별적으로 실행하면 각 파일의 출력이 체크섬되는 것을 볼 수 있습니다. 그러나 xargs로 파이프하면 더 이상 find 명령의 출력이 표시되지 않습니다.
다른 명령으로 파이프될 때 find의 출력을 볼 수 있는 방법이 있습니까?
답변1
당신은 이것을 원합니다 :
find / -type f -ctime +30 -mtime +30 -atime +30 -print0 | xargs -0 -P 4 md5sum
md5sum 명령에 파일 목록을 입력하려고 합니다. 이것은 으로 이루어집니다 find / | xargs md5sum
. 그러면 파일 이름에 이상한 문자(공백, 줄 바꿈 등)가 들어가는 것에 대해 걱정할 필요가 없으므로 -print0
find 및 -0
xargs에 사용합니다.
답변2
나는 당신의 주문을 수락했습니다
$ find / -type f -ctime +30 -mtime +30 -atime +30 -exec md5sum {} \; | xargs -P 4
그리고 stdout으로 에코하면서 리디렉션을 원한다고 생각해보세요. 이를 수행할 수 있는 한 가지 방법은 티셔츠를 사용하는 것입니다.
$ man tee | head
NAME
tee - read from standard input and write to standard output and files
따라서 tee는 확실히 표준 출력(체인을 계속하는 데 필요한 것)에 쓰고 우리가 선택한 파일에도 씁니다. 엄청난! 그런데 무슨 문서?
이 답변에 대한 아이디어를 주셔서 감사합니다https://stackoverflow.com/a/9405342, 우리는 사용할 수 있습니다
/dev/tty
리디렉션을 위해 콘솔에 인쇄됩니다!
따라서 전체 명령의 경우 다음과 같습니다.
$ find / -type f -ctime +30 -mtime +30 -atime +30 -exec md5sum {} \; | tee /dev/tty | xargs -P 4
이렇게 하면 화면 아래로 스크롤되는 멋진 텍스트가 보이기 시작합니다. :)