2016-11-08 1 views
0

상황 파일 : 나는 파일 형식을 변화의 약 1GB의 포함 바탕 화면이라는 unsorted_files에 폴더가는 정렬 유닉스 스크립트를 작성하고 공정

을 (JPG, GIF, DOCX, PNG, WAV, 중간, CSV)

이 외에도 전용 파일 유형 (jpg, gif, docx) 만 보유하고있는 데스크톱에 3 개의 추가 디렉토리가 있습니다. 이러한 전용 디렉토리

실제 디렉토리 이름은 다음과 같습니다

jpgdirectory 
gifdirectory 
docxdirectory 

문제 :

내가 맥 OS 10.10.5있는 별도의 것에 터미널을 통해 실행할 수있는 bash는 스크립트를 작성하고 싶습니다 unsorted_files 폴더에서 이러한 파일 유형을 처리하고 파일 유형에 따라 새로 생성 된 디렉토리에 배치하십시오.

즉. 스크립트 실행시 unsorted_files 폴더의 모든 jpg 파일이 jpgdirectory로 전송되고 모든 gif 파일이 gifdirectory로 보내집니다.

주의해야 할 점은 (jpgdirectory, gifdirectory, docxdirectory)와 함께 모든 파일 유형이 기타로 보냄

어떻게하면 bash 스크립트 관점에서이 목표를 달성 할 수 있을까요? 아니면 터미널 명령만으로이 작업을 수행 할 수 있습니까?

+0

'mv unsorted_files/*. jpg jpgdirectory /'? 분류 된 파일을 모두 이동 한 후에는 "기타"파일이 남게됩니다. –

답변

2

bash에서 mkdir 및 mv 명령을 자동화하려면 다음과 같이 'for'루프에 넣을 수 있습니다.

코드 :

jpg 
gif 
docx 
png 
wav 
mid 
csv 

또한 바로 파일 형식

을 즉 하드 코드 수 :

#!/bin/bash 

unsorted_path="/path/to/unsorted/dir" 
output_path="/path/to/output/dirs" 
for type in $(cat filetypes.txt) 
do 
    mkdir -p ${output_path}/${type}directory 
    mv ${unsorted_path}/*.${type} ${output_path}/${type}directory/ 
done 

'filetypes.txt'파일은 파일 형식, 같은 줄에 하나의 목록입니다

#!/bin/bash 

unsorted_path="/path/to/unsorted/dir" 
output_path="/path/to/output/dirs" 
for type in jpg gif docx png wav mid csv 
do 
    mkdir -p ${output_path}/${type}directory 
    mv ${unsorted_path}/*.${type} ${output_path}/${type}directory/ 
done 

희망이 있습니다.

+0

감사합니다. 나는 이것을 줄 것입니다. –

+0

marcus filetypes.txt 파일은 스크립트 외에도 별도의 txt 파일을 만들거나 스크립트에 중첩시킬 수 있습니까? –

+0

예. 'filetypes.txt'는 별도의 파일입니다. 두 번째 코드 예제에서는 파일 형식을 스크립트에 하드 코드 할 수 있습니다 (예 :'type for jpg gif docx png wav mid csv ...' –

관련 문제