Bash 复制带有变量的文件

发布于 2024-09-27 03:30:44 字数 723 浏览 7 评论 0原文

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

New to bash scripting, I'm writing a script to copy my TV shows accross from a download folder to an archive folder.

So far I have this:

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

I understand this is not the best method, but my skills of bash are quite limited.

I need to know how I can copy that found file, or do nothing if it doesnt find anything matching (this will be a cron script).
eg.

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"

Thanks!

EDIT: Solved http://pastebin.com/aNLihR86

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

后eg是否自 2024-10-04 03:30:44
find . -name "*show1*" -exec cp {} /mnt/main/data/tv/Show1 \;

(将 . 替换为您要查看文件的目录)

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

(Replace the . by the directory you want to look files into)

夏末 2024-10-04 03:30:44

重击 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

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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文