-execdir을 찾는 방법+ 일?

-execdir을 찾는 방법+ 일?

내가 이해한 바로는 일치하는 각 파일에 대해 지정된 테스트가 find -tests -execdir <command> '{}' ';'실행됩니다. command이 명령을 사용하면 -execdir일치하는 파일과 동일한 상위 디렉터리에서(일치하는 각 파일에 대해) 실행되며 {}일치하는 파일의 기본 이름을 나타냅니다.

+이제 질문은 여러 파일을 동시에 처리하는 대신 을 사용하는 경우 어떻게 달성됩니까 ';'? 를 사용하면 find -tests -execdir <command> '{}' +모든 파일이 지정된 명령에 대한 인수로 제공됩니다(최대 인수를 초과하지 않는 방식으로). 어떻게 <command>동시에 모든 항목에 대해 find를 실행할 수 있나요?

답변1

find다음 파일을 찾았다 고 가정해 보겠습니다 .

./foo/bar
./foo/baz
./foo/quux

을 사용하는 경우 -execdir [...]+유효한 결과 명령은 다음과 같습니다.

( cd ./foo; command bar baz quux )

다음을 사용하면 그 반대가 (효과적으로) 됩니다 -execdir [...] \;.

( cd ./foo; command bar )
( cd ./foo; command baz )
( cd ./foo; command quux )

-execnot 도 마찬가지 execdir지만 작업 디렉터리를 변경하는 대신 경로를 지정합니다. 을 사용하는 경우 -exec [...]+유효한 결과 명령은 다음과 같습니다.

command ./foo/bar ./foo/baz ./foo/quux

다음을 사용하면 그 반대가 (효과적으로) 됩니다 -exec [...] \;.

command ./foo/bar
command ./foo/baz
command ./foo/quux

두 디렉터리에 있는 파일이 어떻게 작동하는지 살펴보겠습니다.

$ tree
.
├── bar
│   ├── bletch
│   └── freeble
└── foo
    ├── bar
    ├── baz
    └── quux
$ find . -type f -exec echo {} \;
./foo/baz
./foo/quux
./foo/bar
./bar/bletch
./bar/freeble
$ find . -type f -execdir echo {} \;
./baz
./quux
./bar
./bletch
./freeble
$ find . -type f -exec echo {} +
./foo/baz ./foo/quux ./foo/bar ./bar/bletch ./bar/freeble
$ find . -type f -execdir echo {} +
./baz ./quux ./bar
./bletch ./freeble

관련 정보