2010-10-08 111 views
0

bash腳本新手,我正在編寫一個腳本將我的電視節目從下載文件夾複製到歸檔文件夾。Bash複製變量文件

到目前爲止,我有這樣的:

find `*`show1`*`.avi | cp \"" $0 "\" "/mnt/main/data/tv/Show1" 
find `*`show2`*`.avi | cp \"" $0 "\" "/mnt/main/data/tv/Show2" 

我明白這不是最好的方法,但我的bash的能力相當有限。

我需要知道如何複製找到的文件,或者如果找不到任何匹配的東西(這將是cron腳本),請不要執行任何操作。 例如。

find `*`show1`*`.avi | cp "show1.hello.world.xvid.avi" "/mnt/main/data/tv/Show1" 
find `*`show2`*`.avi | cp "show2.foo.bar.xvid.avi" "/mnt/main/data/tv/Show2" 
find `*`show3`*`.avi | cp "null (nothing found)" "/mnt/main/data/tv/Show3" 

謝謝!

編輯:解決http://pastebin.com/aNLihR86

+0

一個重複的種類:HTTP ://stackoverflow.com/questions/1313590/bash-copy-all-files-except-one – Wok 2010-10-08 12:59:19

回答

2
find . -name "*show1*" -exec cp {} /mnt/main/data/tv/Show1 \; 

(更換由目錄,你想看看文件到。)

+0

謝謝,但它返回: find/my/dir -n ame * show1 * -exec cp {}「/ mnt/main/data/tv/Show 1」\; 找到:show1.pdtv.avi:未知選項 – Dean 2010-10-08 13:03:13

+0

我想你已經忘記引用名稱參數,它應該是:find/my/dir -name「* show1 *」-exec cp {}「/ mnt/main/data/tv/Show 1「\; – hellvinz 2010-10-08 13:27:20

+0

當我引用它時,它找不到任何東西(是的,文件在那裏)。找到:沒有匹配 – Dean 2010-10-08 13:28:18

0

擊4+

shopt -s globstar 
shopt -s nullglob 
for file in **/*show* 
do 
    case "$file" in 
    *show1*) dest="/mnt/main/data/tv/Show1" ;; 
    *show2*) dest="/mnt/main/data/tv/Show2" ;; 
    *show3*) dest="/mnt/main/data/tv/Show2";; 
    esac 
    cp "$file" "$dest" 
done 
+0

我得到一個錯誤:http://pastebin.com/UDVCbrv0 – Dean 2010-10-08 13:34:21