터미널에서 실행할 수 있습니다 ...
find . -type f -print0
./testdir/testfile2.txt./testdir/testfile.txt
그런 다음...
find . -type f -printf "%p\0"
./testdir/testfile2.txt./testdir/testfile.txt
시각적으로 동일해 보이지만 이는 null 문자에 관한 것이므로 그다지 의미가 없습니다. Ruby repl을 통해 실행하는 경우:
2.5.1 :001 > `find . -type f -print0`
=> "./testdir/testfile2.txt\u0000./testdir/testfile.txt\u0000"
그런 다음
2.5.1 :002 > `find . -type f -printf "%p\0"`
Traceback (most recent call last):
3: from /usr/share/rvm/rubies/ruby-2.5.1/bin/irb:11:in `<main>'
2: from (irb):2
1: from (irb):2:in ``'
ArgumentError (string contains null byte)
-print0
옵션 출력과 의 차이점은 무엇입니까 printf
?
테스트 시스템 정보:
이름:Linux XPS-15-9570 4.15.0-30-generic #32-Ubuntu SMP Thu Jul 26 17:42:43 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
루비: ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]
.
답변1
차이가 없어야 합니다. 파이프를 통한 출력은 cat -v
인쇄할 수 없는 문자를 이스케이프합니다.
어쩌면 사물을 수정하는 특별한 로캘이 있을 수도 있습니다 -print0
. 적어도 내 en_US.UTF-8 설정에는 차이가 없습니다. 아마도 locale
귀하의 질문에 이것의 결과를 추가하십시오 .
Ruby에 대한 테스트로 인해 Ruby가 \0
자체적 으로 해석되고 find
실행되지 않을 수도 있습니다.