2017-12-15 17 views
0

우분투를 사용하고 있으며 이미지 폴더 (30k 이미지)를 다른 폴더로 분할하려고합니다. 그러나, 나는 그들을 (작은 하위 폴더로 분할하는 것뿐만 아니라) 정렬하고 싶다. 이미지의 폴더 대상에 대한 정보가 들어있는 파일이 있습니다. 화상에 123.jpg : csv 파일을 사용하여 폴더를 여러 폴더로 분할하는 방법은 무엇입니까?

이 3으로서 해석되어야 1

  • 124.jpg 2
  • 125.jpg,

    • 123.jpg : 파일은 다음과 같이 구성되어있다 폴더 1, 이미지 124.jpg, 폴더 2, 이미지 125.jpg, 폴더 3,

      우분투에서이 작업을 효율적으로 수행 할 수있는 방법이 있습니까? 파일 목록과 목적지가 포함 된 파일을 가정

  • +0

    물론,의 CSV 파일의 라인을 반복 쉼표로 각 행을 분할 대상 디렉토리 (두 번째 열)에 파일 (첫 번째 열)를 이동 :

    description.txt 파일은 예를 들어 있습니다. 이런 식으로 이미 시도해 봤니? – Pavel

    +0

    @Pavel 나쁜데, 나는 우분투가 처음이고 경험이 거의 없다. 당신은 더 구체적 일 수 있습니까? – Ismail

    +0

    https://www.cyberciti.biz/faq/unix-howto-read-line-by-line-from-file/ – Pavel

    답변

    0

    List.txt 파일 이름

    당신은 bash 쉘에서 다음과 같이 그것을 할 수

    :

    while IFS=, read -r file destination 
    do 
        echo "mv $file $destination/$file" 
    done < list.txt 
    

    이이 질문과 대답을 기반으로 : How to parse a CSV file in Bash?

    +0

    코드를 선택하고 '{}'로 표시된 버튼을 클릭하여 코드를 포맷 할 수 있습니다. –

    +0

    답안의 마지막'$ file'은 불필요합니다. 리눅스에서는'mv file directory' 구문을 사용하면 더 간단하게 원래 이름을 얻을 수 있지만 새 디렉토리에 저장됩니다. –

    +0

    예, 맞습니다. 명확한 답변을 제공하기 위해 추가되었습니다. –

    1

    할 수 있습니다 다음과 같은 방법으로 파일에 제공되는 설명에 따라 파일을 이동 :

    awk -F"," '{ print "mv",$1,$2}' description.txt | sh

    description.txt에 나열된 대상 디렉토리가 이미 존재한다고 가정합니다.

    awk합니다 (-F"," 설정) 콤마로 분리 description.txt 파일 (,)를 판독하고, 첫째 ($1) 및 2 ($ 2) 필드에 필요한 문자열을 추가한다. 먼저 출력을 테스트하기 위해 위의 명령을 | sh 부분없이 사용하십시오. 모든 것이 잘되면, 실행을 위해 | sh을 추가하면 파이프 (|)는 awk의 결과를 shell에 넣습니다.

    123.jpg, 1 
    124.jpg, 2 
    125.jpg, 3