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]
파일이 있는데 이에 대해 듣고 싶지 않은 경우 일 수도 있습니다 .