svr_vars라는 코드가 있습니다. 300개의 서로 다른 파일이 포함된 디렉토리가 있습니다. 나는 그것을 반복하고 디렉토리의 각 파일에 대해 코드를 실행하고 싶습니다. svr_vars 코드는 공통 파일 이름 svr_vars.txt를 출력합니다. 따라서 코드를 실행할 때마다 svr_vars.txt 파일 이름을 덮어씁니다. 따라서 코드를 실행할 때마다 이름을 바꿔야 합니다.
1995051200_72259.txt <= 디렉토리에 있는 파일은 어떤 모습인가요?
출력 이름을 svr_vars.txt에서 svr.1995051200_72259.txt로 바꾸고 싶습니다.
답변1
질문을 올바르게 이해했다면 기본적으로
svr_vars 1995051200_72259.txt
프로그램이 라는 출력을 생성하면 svr_vars.txt
이름을 다음으로 바꾸고 싶습니다.svr.1995051200_72259.txt
300개의 파일이 모두 숫자로 시작하고 숫자로 끝난다고 가정하면 다음 .txt
과 유사한 루프를 수행할 수 있습니다.
#!/bin/bash
for file in [1-9]*.txt
do
svr_vars "$file"
mv svr_vars.txt "svr.$file"
done
제대로 작동하지 않으면 중단되도록 이 루프에 몇 가지 온전성 검사를 추가할 수 있습니다. 예를 들어
#!/bin/bash
for file in [1-9]*.txt
do
if [ -e "svr.$file" ]
then
echo "$file already processed. skipping"
else
svr_vars "$file"
if [ ! -e svr_vars.txt ]
then
echo "Failed to create results for $file"
else
mv svr_vars.txt "svr.$file"
fi
fi
done