아티팩트를 찾아 txt 파일로 병합하는 간단한 Linux 스크립트

아티팩트를 찾아 txt 파일로 병합하는 간단한 Linux 스크립트

모든 것이 고려되었는지 확인하기 위해 거의 매주 빌드 아티팩트를 확인해야 합니다. 스크립트는 다음과 같습니다. 이 명령을 실행할 수 없습니다.

#!/bin/bash 

cd /mydir/nextlevel/here
find . -name *.rpm > ~/rpm.txt
find . -name *.zip > ~/zip.txt

cd ~/
cat rpm.txt zip.txt > artifacts.txt

rm rpm.txt zip.txt

mv artifacts.txt /newdir/myname

답변1

가장 큰 문제는 두 줄입니다.

find . -name *.rpm > ~/rpm.txt
find . -name *.zip > ~/zip.txt

*.rpm...그리고 *.zip길과아니요이 대사를 인용해 보세요.

이는 예를 들어 etc(패턴과 일치하는 모든 이름) *.rpm로 확장된다는 것을 의미합니다.file1.rpm file2.rpm앞으로 find전화도 했어요. 이로 인해 find"알 수 없는 옵션"(또는 유사한 옵션)에 대한 불만이 발생할 수 있습니다 .

대신 확장되지 않은 파일 이름 패턴을 전달하려고 합니다.

find . -name '*.rpm' > ~/rpm.txt
find . -name '*.zip' > ~/zip.txt

이렇게 하면 스크립트가 제대로 작동하게 됩니다.


제안:

#!/bin/sh

find /mydir/nextlevel/here -type f \( -name '*.rpm' -o -name '*.zip' \) -print >/newdir/myname

이는 스크립트가 수행하는 모든 작업을 특정 파일 이름 접미사가 있는 파일을 찾고 파일에서 해당 이름을 수집하는 하나의 명령으로 결합합니다 /newdir/myname.

유일한 차이점은가득한포함된 경로는 /mydir/nextlevel/here각 파일 목록에 포함되며, 파일은 다른 순서로 나열될 수 있습니다.

다음 스크립트는 출력 파일의 경로를 수정합니다.

#!/bin/sh

cd /mydir/nextlevel/here &&
find . -type f \( -name '*.rpm' -o -name '*.zip' \) -print >/newdir/myname

지금도 find계속되고 있어요오직성공 하면 cd.

답변2

이 명령은 수행 중인 모든 작업을 수행합니다.

find /mydir/nextlevel/here \( -name "*.rpm" -o -name "*.zip" \) \
    > /newdir/myname/artifacts.txt

관련 정보