2009-11-20 156 views
0

我有一些視頻文件都以.wmv .mov .mpg結尾。我有以.mp3 .wma結尾的音樂文件。最後我有一些文本文件全部以擴展名結尾.txt基本shell腳本

我編寫了一個shell腳本,用於生成子文件夾,一個用於音樂文件,一個用於視頻文件,另一個用於文本文件,然後組織所有的文件放入正確的子文件夾中。 但我遇到了一個小問題...

***我想腳本是交互式的,並提示用戶他/她是否想組織文件。另外,我希望腳本能夠編寫一個日誌文件,其中包含每個文件的原始文件名以及移動到的新文件路徑/名稱。我希望腳本接受一個命令行參數,它是包含無組織文件的文件夾。這應該允許腳本從文件系統中的任何位置定位並運行,並接受任何無組織文件的文件夾。

例子:

organizefiles.sh的MyStuff /媒體

其中的子文件夾將裏面去了 「媒體」

如何做到這一點任何想法? 謝謝!

+2

你不能真的只發佈一個功能的洗衣清單,然後說:「如何做到這一點的任何想法?」選擇一個具體的東西,並問如何做到這一點。否則,這聽起來像你只是要求你爲你寫腳本。 – 2009-11-20 23:07:28

+1

您應該更詳細地指定用戶交互。你應該顯示你到目前爲止的代碼。 – 2009-11-20 23:08:01

+0

你是正確的,你會發現我到目前爲止 – 2009-11-20 23:35:37

回答

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 tutorialthis得到與shell腳本熟悉。

+0

你太善良了,先生。這就像一個迷你教程本身! – codebliss 2009-11-21 00:19:07

2

我建議切換到python,編寫和維護這樣的代碼要容易得多。

至於慶典:

  1. 讀取輸入:read
  2. 讀取命令行參數:see here
  3. 寫入日誌文件,只需做echo "something" >> mylogfile.log
+0

謝謝你的鏈接,他們非常有用! – 2009-11-21 19:15:00

0

這裏是劇本我到目前爲止有

 
#!/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

您應該發佈後續評論或編輯原始問題。 – 2009-11-21 03:31:09

+0

對不起,謝謝! – 2009-11-21 19:14:19