셸 스 크 립 트 는 파일 의 무 작위 중복 선별 을 실현 합 니 다.

4404 단어 Linux
심도 있 는 학습 실험 을 할 때 비교적 많은 유형의 데 이 터 를 훈련 하고 테스트 함으로써 네트워크 구조의 합 리 성 을 나타 내야 한다.서로 다른 데이터 세트 의 수량 이 다 르 고 열 이 다양 하 며 이미지 분류 실험 을 할 때 인공 적 으로 그림 을 선별 하고 구분 하면 작업량 이 많 고 실 수 를 하기 쉽다.합격 한 프로그래머 로 서 게 으 름 을 피 우지 않 으 면 절대 안 된다!
쓸데없는 말 은 그만 하고 코드 를 바로 입력 하 세 요.
#!/bin/bash

trainPath="         "
validationPath="         "
# trainPath       
trainDirList=`ls $trainPath`

#            
for DirName in $trainDirList
do
    cd $trainPath/$DirName
    #             
    dirNum=`ls -l|grep "^-"|wc -l`
    picList=`ls *.jpg`
    k=0
    for fileName in $picList
    do
        fileNameArr[k]=$fileName
        k=$k+1
    done

    arr=($(seq 1 $dirNum))
    num=${#arr[*]}
    #                   
    let filterNum=$num*1/4
    #                    
    res=${arr[$(($RANDOM%num))]}
    fileArr[1]=$res
    let i=2
    #             fileArr  ,           
    while(( i<=filterNum ));
    do
        res=${arr[$(($RANDOM%num))]}
        fileArr[i]=$res
        for((j=1;jdo
        numJ=${fileArr[j]}
        if [[ $res == $numJ ]]; then
            unset fileArr[i]
            i=$i-1
            break
        fi
        done
        i=$i+1
    done

    cd $validationPath
    mkdir $DirName
    for((indexNum=0;indexNum<$filterNum;indexNum++))
    do
#       echo ${fileNameArr[fileArr[indexNum]-1]}
        mv $trainPath/$DirName/${fileNameArr[fileArr[indexNum]-1]} $validationPath/$DirName
    done
done

상기 코드 에 대해 간략하게 설명 합 니 다. 먼저 모든 데 이 터 를 훈련 집 폴 더 에 넣 은 다음 에 4 분 의 1 의 그림 을 테스트 집 폴 더 에 추출 합 니 다. 중간 에 있 는 큰 코드 는 실제 적 으로 중복 되 지 않 는 랜 덤 수 를 자동 으로 생 성하 기 위해 서 입 니 다.
코드 는 몇 초 만 에 달 릴 수 있 습 니 다. 파일 관리 자 를 열 어 볼 수 있 습 니 다. 이미 선별 이 끝 났 습 니 다. 시간 을 절약 하고 셸 프로 그래 밍 분야 의 지식 을 복습 할 수 있 습 니 다. 왜 기꺼이 하지 않 겠 습 니까?

좋은 웹페이지 즐겨찾기