찾기 명령을 사용하세요

찾기 명령을 사용하세요

나는 많은 디렉토리를 가지고 있습니다. 이 디렉토리에는 소개서와 zip 작업 파일이 포함되어 있습니다. 작업 폴더를 살펴볼 가치가 있는지 결정할 수 있도록 빠르고 간단한 쿼리를 실행하여 모든 소개서를 열고 싶습니다.

find . | grep cover\.pdf | xargs open    #OS X has open linked to "open" the file

이것은 작동하지 않습니다. 나는 또한 거의 성공하지 못한 print0채 다양한 변형을 시도했습니다 xargs -0. 이를 수행하는 올바른 방법은 무엇입니까?

답변1

먼저 Mac-OSX 컴퓨터에서 실제로 사용되는 /의 버전을 확인하세요 find. xargs어쩌면 BSD/GNU 동작/옵션을 기대하고 GNU/BSD 버전을 사용할 수도 있습니다.

혹시 몰라열려 있는여러 매개변수를 지원합니다. 다음과 같이 호출되지 않는 경우 xargs:

xargs -n 1 open

(이는 xargs가 각 인수에 대해 추가 열기 프로세스를 수행함을 의미합니다)

파일 이름/경로에 공백이 포함되어 있으면 find | xargs없이는 -print0/-0실패할 것으로 예상됩니다 .

아하, 다음과 같은 것을 사용하면

find -print0 | grep something | xargs -0 foo

그리고 grep모든 캐릭터에 혼란을 겪었습니다 \0.

GNU는 grep(적어도) 이 -z옵션을 알고 있습니다. 따라서 작동해야 하는 것은 다음과 같습니다.

find -print0 | grep -z something | xargs -0 foo

grep어떤 버전을 사용하고 있는지 확인하세요 .

grep --version

또는 (0자) 지원 grep에 대해서는 매뉴얼 페이지를 확인하십시오 .\0

답변2

이것은 작동합니다:

찾다. -이름 표지\.pdf -exec '{}' 열기 \;

다음과 같이 테스트할 수 있습니다.

찾다. -이름 표지\.pdf -exec ls -l '{}' \;

OSX에서 매뉴얼 페이지가 어떤 모습인지는 확실하지 않지만 예제를 검색하면 Finding Man Pages에 다양한 예제가 있습니다. 나는 종종 이것을 확인함으로써 내 두뇌를 상쾌하게 만듭니다.

답변3

시스템의 xargs가 -n 옵션을 지원하는 경우 다음을 시도해 볼 수 있습니다.

find . | grep cover\.pdf | xargs -n 1 open

관련 정보