목록의 모든 파일 실행

목록의 모든 파일 실행

make실행 시 "001", "002" 등이라는 이름의 여러 실행 파일을 생성하는 소스 트리가 있습니다 . 저는 소스 트리에서 이러한 모든 실행 파일을 찾아 실행하는 스크립트를 작성하려고 합니다. 지금까지 나는 이것을 가지고 있습니다 :

find build/ -type f -executable | ack --nocolor "\d{3}$"

올바르게 실행하려는 실행 파일이 나열되어 있습니다.

내 질문은 이 모든 것을 어떻게 실행합니까?입니다. xargs과 의 조합이 exec가능하다고 생각했는데 , exec현재 쉘을 명령으로 대체하려는 것 같은데, 이는 내가 원하는 것이 아닙니다.

답변1

이것은 효과가 있을 수 있습니다

find build/ -type f  -executable -exec sh -c 'exec "$1"' _ {} \;

또는 001, 002.. 파일 만 필터링

find build/ -type f -name '*[0-9][0-9][0-9]' -executable  -exec sh -c 'exec "$1"' _ {} \;

답변2

노력하다:

$ find build/ -type f -executable | ack --nocolor "\d{3}$" |
while read prog
do
    "$prog"
done

답변3

이 기능이 잘 수행하는 기능 중 하나 find는 기준에 맞는 파일을 선택하는 것이므로 이름이 세 자리 숫자로 구성된 파일을 선택하는 데 사용할 수 있습니다. 그런 다음 다음과 같은 간단한 형식을 사용할 수 있습니다.

find build -name "[0-9][0-9][0-9]" -type f -executable -exec {} ";"

-regex '.*/\d{3} 적합한 방법을 찾으면 -regextype이를 사용할 수도 있습니다.

답변4

find -type f -name '00[123]' -exec env - {} \;

다양한 실행 파일에 대해 선언하려는 환경을 추가하세요. 2>/dev/null실행할 수 없는 00[123]파일이 있는데 이에 대해 듣고 싶지 않은 경우 일 수도 있습니다 .

관련 정보