Bash使用变量复制文件

时间:2010-10-08 12:53:18

标签: bash copy find cron

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

2 个答案:

答案 0 :(得分:2)

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

(将您希望查看文件的目录替换为。)

答案 1 :(得分:0)

Bash 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