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