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"
谢谢!
答案 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