찾기 결과 매핑

찾기 결과 매핑

검색을 통해 다음과 같은 결과를 얻었습니다.

$ find subprojects -mindepth 1 -maxdepth 1

subprojects/install-globally-first
subprojects/installation-test-project-custom-config
subprojects/install-via-github
subprojects/init-from-nothing
subprojects/node-path-test
subprojects/install-globally-with-nvm
subprojects/installation-test-project
subprojects/parallel-installs-of-suman

이 결과를 다음에 매핑하고 싶습니다.

subprojects/install-globally-first/test.sh
subprojects/installation-test-project-custom-config/test.sh
subprojects/install-via-github/test.sh
subprojects/init-from-nothing/test.sh
subprojects/node-path-test/test.sh
subprojects/install-globally-with-nvm/test.sh
subprojects/installation-test-project/test.sh
subprojects/parallel-installs-of-suman/test.sh

(이 경우 내가 한 일은 결과에 "/test.sh"를 추가한 것뿐이었습니다. 좋은 해결책은 다음과 같을 것이라고 확신합니다.

$ find subprojects -mindepth 1 -maxdepth 1 | something (?)

그러나 나는 그것이 무엇일 수 있는지 전혀 모른다! 여기 꽤 초보자입니다. 이를 수행하는 방법은 여러 가지가 있을 수 있으며 가장 간단하고 강력한 솔루션을 찾고 싶습니다.

test.sh 파일이 이미 이 경로에 존재하므로 다음을 수행할 수 있습니다.

find subprojects -mindepth 2 -maxdepth 2 -name "test.sh"

하지만 저는 이러한 test.sh 파일이 파일 시스템에 아직 존재하지 않는다는 가정 하에 이를 수행할 수 있는 방법을 찾고 있는 것 같습니다.

답변1

sed원하는 접미사를 추가하여 각 줄을 "편집" 할 수 있습니다 .

find subprojects -mindepth 1 -maxdepth 1 | sed 's!$!/test.sh!'

일반 구분 기호 sed는 이지만 대체 항목이 이미 포함되어 있고 결과( )에서 시각적 구조로 끝나기 를 원하지 않기 때문에 /이를 사용했습니다 .!/\/sed 's/$/\/test.sh/'

존재할 수 있는 파일이나 아직 존재하지 않지만 앞으로 존재할 파일을 찾고 있다면 아마도 다음을 find사용하여 선택 항목을 디렉터리로 제한해야 할 것입니다.find subprojects -mindepth 1 -maxdepth 1 -type d


댓글에서 이것을 한 줄에 넣는 방법도 물으셨습니다. 인수에 공백이 포함되어 있지 않으면( subprojects/some where/test.sh예를 들어) 결과를 xargs.

답변2

마지막으로 무언가를 추가하면 간단한 에코도 작동합니다.

find subprojects -mindepth 1 -maxdepth 1 -exec echo {}/test.sh \;
#OR to have them in variables
IFS=$'\n';ff=($(find subprojects -mindepth 1 -maxdepth 1 -exec echo {}/test.sh \;));echo ${ff[@]}

답변3

GNU 병렬을 사용하려는 경우:

find subprojects -mindepth 1 -maxdepth 1 | parallel echo {}/test.sh

이렇게 하면 실행도 쉬워집니다.

find subprojects -mindepth 1 -maxdepth 1 | parallel {}/test.sh

관련 정보