나는 많은 디렉토리를 가지고 있습니다. 이 디렉토리에는 소개서와 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