2009-11-20 4 views
0

.wmv .mov .mpg로 끝나는 일부 비디오 파일이 있습니다. mp3 .wma로 끝나는 음악 파일이 있습니다. 마지막으로 확장자가 .txt 인 텍스트 파일이 있습니다.기본 셸 스크립트

음악 파일 용, 비디오 파일 용, 텍스트 파일 용 하위 폴더를 생성하는 셸 스크립트를 작성한 다음 모든 파일을 구성합니다 파일을 올바른 하위 폴더에 복사하십시오. 하지만 조금 문제가 생겼습니다 ...

*** 스크립트를 대화 형으로 만들고 파일을 구성하려는 경우 사용자에게 묻습니다. 또한 스크립트에서 각 파일에 대해 원래 파일 이름과 이동 된 새 파일 경로/이름을 포함하는 로그 파일을 작성하고 싶습니다. 그리고 스크립트가 unorganized 파일을 포함하는 폴더 인 명령 줄 인수를 받아 들일 것을 원합니다. 이렇게하면 스크립트가 파일 시스템의 어느 위치에서나 실행되고 정리되지 않은 파일의 폴더를 허용 할 수 있습니다.

예 :

organizefiles.sh의 mystuff에/미디어

곳 안으로 들어가 "미디어"할 하위 폴더

그 작업을 수행하는 방법에 대한 모든 아이디어가? 감사합니다.

+2

기능 목록을 게시하고 "어떻게하는지에 대한 아이디어가 있습니까?"라고 말할 수는 없습니다. 하나의 구체적인 것을 고르고 어떻게하는지 묻습니다. 그렇지 않으면 당신이 당신을 위해 스크립트를 작성하도록 요구하는 것처럼 들립니다. –

+1

사용자 상호 작용을보다 자세히 지정해야합니다. 그리고 지금까지 가지고있는 코드를 보여 주어야합니다. –

+0

당신이 바로 아래에 있습니다 내가 지금까지 가지고있는 것을 발견 할 것입니다 –

답변

4

여기부터 시작하겠습니다. 나머지는 직접 시도해보십시오.

find /path -type f \(-iname "*.mp3" -o -iname "*.txt" \) -exec file -N "{}" + | while IFS=":" read -r filename type 
do 
    case "$type" in 
     *[vV]ideo*|*AVI*) echo "Video: $filename";; 
     *[Aa]udio*|*MPEG*ADTS*) echo "Audio file: $filename";; 
     *[Aa]scii*[tT]ext*) echo "Text: $filename" ;; 
     *) echo "No type: $filename-> type: $type";; 
    esac 
done 

쉘 스크립트로했습니다 얻을 bash tutorial 또는 this을 읽어 보시기 바랍니다.

+0

지나치게 친절합니다. 미니 튜토리얼 자체와 같습니다! – codebliss

2

파이썬으로 전환하는 것이 좋습니다. 훨씬 쉽게 작성하고 유지할 수 있습니다. bash에 관해서는

:

  1. 읽기 입력 : read
  2. 읽기 명령 줄 인수 : see here
  3. 로그 파일에 쓰기, 단순히 여기에 echo "something" >> mylogfile.log
+0

링크 주셔서 감사합니다, 그들은 매우 유용했습니다! –

0

을 스크립트입니다 I 지금까지 가지고있다

 
#!/bin/bash 
mkdir movies 
mkdir songs 
mkdir textfiles 
mv *.wmv movies 
mv *.mov movies 
mv *.mpg movies 
mv *.mp3 songs 
mv *.wma songs 
mv *.txt text 
ls -l movies, >> log.txt 
ls -l songs >> log.txt 
ls -l textfiles >> log.txt 
+1

의견을 게시하거나 원래 질문을 편집하여 후속 조치를 게시해야합니다. –

+0

죄송합니다. 고마워요! –

관련 문제