2017-10-10 3 views
0

공백을 포함하는 모든 파일 이름을 파이프에 전달하거나 최소한 공백을 포함하는 파일을 전달하는 방법이 있습니까? 이를 위해 나는 시도 :find -print0 -name "* *"(공백)

보시다시피
~/Desktop> find . -type f -mindepth 1 -maxdepth 1 -name "* *" | wc -c 
     0 
~/Desktop> find . -type f -mindepth 1 -maxdepth 1 -print0 -name "* *" | wc -c 
    247 
~/Desktop> 

는 -print0없이 명령이 정확하게 현재 디렉토리에 공백이 포함 된 어떤 파일을 발견하지 않습니다. 그러나 -print0을 추가하면 -name 옵션이 예상대로 해석되지 않습니다.

-name "* *" 

보다

더 나은는 공백뿐 아니라 공간을 지정하는 몇 가지 방법이 될 것입니다. perl 정규식을 사용하여 "downstream"처리를 사용하는 대신 find를 사용하는 것이 이상적입니다. 궁극적으로 필자는 지정된 문자로 공백 문자를 대체 할 스크립트에 파일 이름을 파이프하고자합니다.

답변

1

주문 관련 사항.

find . -print -name "foo" 

이 인쇄에만 작업이 필터 후에 오기 때문에, foo라는 이름의 그 :

find . -name "foo" -print 
+0

이 방식이되는 -print 조치가 -name 필터 앞에 오는 있기 때문에 하나 하나 이름을 인쇄합니다 "touch foo $ '\ r'bar" –

+0

'-name'* [[: space :]] * ''에 의해 생성 된 파일과 같이 탭과 리턴과 같은 "pathological"공백을 포함하는 파일 이름을 지정하십시오. –