当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 7 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : [已解决]求脚本:复制a文件夹文件到b文件夹(根据mime-type复制指定类型文件)
帖子发表于 : 2009-11-07 21:04 
头像

注册: 2008-03-05 15:41
帖子: 238
地址: 中国广西防城港
送出感谢: 0 次
接收感谢: 0 次
A目录:Firefox缓存,如/tmp/firefox/cache
B目录:音乐文件夹,如/home/tux/Music/downloads

firefox缓存中的mp3没有后缀名,只能根据MP3 audio (audio/mpeg)的mime-type确定.mp3文件都多个.脚本最好能30秒循环运行,定期提取mp3存盘.

rsync好像没有根据mime-type同步指定文件的功能,希望能用一个shell脚本完成,最好不要用到python.

======================================已解决的分割线=========================

代码(感谢aerofox提供代码):

代码:
#!/bin/sh

#设定文件夹位置
fxCacheDIR="/dev/shm/firefoxcache/Cache/"
MuiscDIR_TMP="/home/xinzhi/音乐/thesixtyone/tmp/"

#提取缓存文件存盘
for f in $fxCacheDIR*; do
    [ `file -b --mime-type "$f"` = audio/mpeg ] && cp -u "$f" $MuiscDIR_TMP
done

#重命名文件(可选操作)
rename() {
        cd $MuiscDIR_TMP
   ls |while read name;do
      ti=`mid3v2 -l $name |grep TIT2 |sed 's/^.*=//'`
      tl="mp3"
      [ "$ti" ] && mid3iconv -e gb2312 "$name"
      [ "$ti" ] || continue
      [ "$name" != "$ti.$tl" ] && mv "$name" "$ti.$tl" &&\
      echo "重命名\033[;32m <$name> \033[0m为\033[;32m <$ti.$tl> \033[0m"
   done   
   
}

#执行重命名操作,如果需要
if [ "$1" = "-rename" ];then
   echo "即将重命名当前文件夹的所有音乐" && rename
fi


注:
/dev/shm/firefoxcache/Cache/为我的Firefox缓存目录
/home/xinzhi/音乐/tmp/为文件暂存文件夹。
mp3重命名代码来自xiooli, 有修改, 也表示感谢!

使用方法:
1)保存代码为脚本,直接运行。
2)终端下运行,加入参数 -rename可对文件进行重命名和编码操作,需要python-mutagen支持。
3)加入conky里面可循环运行,自动保存网络视听歌曲。

相关文章:
Linux shell自动从浏览器缓存提取mp3(FLV)文件存盘 #Firefox #Linux #mp3 #FLV


最后由 xinzhi 编辑于 2009-11-08 13:30,总共编辑了 10 次

页首
 用户资料  
 
2 楼 
 文章标题 : Re: 求脚本:复制a文件夹文件到b文件夹(根据mime-type复制指定类型文件)
帖子发表于 : 2009-11-07 23:03 

注册: 2008-05-24 8:30
帖子: 1453
送出感谢: 2
接收感谢: 30
30秒热循环应该很容易实现吧,我给个判断 mime-type 的方法:
代码:
for f in /tmp/firefox/cache/*; do
    [ `file -bi "$f"` = audio/mpeg ] && cp -u "$f" /home/tux/Music/downloads/"$f".mp3
done


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 求脚本:复制a文件夹文件到b文件夹(根据mime-type复制指定类型文件)
帖子发表于 : 2009-11-08 0:07 
头像

注册: 2008-03-05 15:41
帖子: 238
地址: 中国广西防城港
送出感谢: 0 次
接收感谢: 0 次
aerofox,

循环运行容易搞定。您给代码快成功了,只是现在还有些小问题,运行脚本后输出如下:
引用:
./savemp3.sh
[: 4: image/png;: unexpected operator
[: 4: image/png;: unexpected operator
[: 4: image/png;: unexpected operator
[: 4: application/x-gzip;: unexpected operator
[: 4: image/gif;: unexpected operator
[: 4: image/png;: unexpected operator
[: 4: image/jpeg;: unexpected operator
[: 4: text/x-c;: unexpected operator
[: 4: image/jpeg;: unexpected operator
[: 4: application/x-gzip;: unexpected operator
[: 4: image/jpeg;: unexpected operator
[: 4: application/x-gzip;: unexpected operator
[: 4: image/jpeg;: unexpected operator
[: 4: image/gif;: unexpected operator
[: 4: image/gif;: unexpected operator
[: 4: application/x-shockwave-flash;: unexpected operator
[: 4: image/jpeg;: unexpected operator
[: 4: application/x-gzip;: unexpected operator
[: 4: image/png;: unexpected operator
[: 4: application/x-shockwave-flash;: unexpected operator
[: 4: image/png;: unexpected operator
[: 4: image/jpeg;: unexpected operator
[: 4: application/x-shockwave-flash;: unexpected operator
[: 4: application/x-gzip;: unexpected operator
[: 4: application/x-gzip;: unexpected operator
[: 4: text/html;: unexpected operator
[: 4: image/jpeg;: unexpected operator
[: 4: image/jpeg;: unexpected operator
[: 4: audio/mpeg;: unexpected operator
[: 4: image/jpeg;: unexpected operator
[: 4: audio/mpeg;: unexpected operator
[: 4: audio/mpeg;: unexpected operator
[: 4: image/png;: unexpected operator
[: 4: image/jpeg;: unexpected operator
[: 4: application/x-shockwave-flash;: unexpected operator
[: 4: audio/mpeg;: unexpected operator
[: 4: application/x-gzip;: unexpected operator
[: 4: image/jpeg;: unexpected operator
[: 4: image/gif;: unexpected operator
[: 4: application/octet-stream;: unexpected operator
[: 4: application/octet-stream;: unexpected operator
[: 4: application/octet-stream;: unexpected operator
[: 4: application/octet-stream;: unexpected operator


源目录文件存在;目标目录为空,没有成功提取文件。


最后由 xinzhi 编辑于 2009-11-08 0:32,总共编辑了 1 次

页首
 用户资料  
 
4 楼 
 文章标题 : Re: 求脚本:复制a文件夹文件到b文件夹(根据mime-type复制指定类型文件)
帖子发表于 : 2009-11-08 0:19 
头像

注册: 2007-08-05 17:40
帖子: 4968
送出感谢: 0 次
接收感谢: 4
代码:
file -bi a.pl
text/x-perl; charset=us-ascii


_________________
free VPN
YouKuDownLoader
代码:
pip3 install ykdl

install YouKuDownLoader, have fun in downloading.
YouKuDownLoader所支持网站列表


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 求脚本:复制a文件夹文件到b文件夹(根据mime-type复制指定类型文件)
帖子发表于 : 2009-11-08 10:06 

注册: 2008-05-24 8:30
帖子: 1453
送出感谢: 2
接收感谢: 30
没想到 file 输出有时候还会多些尾巴
那就改一下试试:
代码:
for f in /tmp/firefox/cache/*; do
    [[ `file -bi "$f"` == audio/mpeg* ]] && cp -u "$f" /home/tux/Music/downloads/"$f".mp3
done

楼主贴的错误我没看出是怎么产生的,能不能把代码贴出来看看。


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 求脚本:复制a文件夹文件到b文件夹(根据mime-type复制指定类型文件)
帖子发表于 : 2009-11-08 11:05 
头像

注册: 2008-03-05 15:41
帖子: 238
地址: 中国广西防城港
送出感谢: 0 次
接收感谢: 0 次
aerofox,
代码:
代码:
#!/bin/bash
for f in /dev/shm/firefoxcache/Cache/*; do
    [ `file -bi "$f"` = audio/mpeg* ] && cp -u "$f" /home/xinzhi/音乐/thesixtyone/tmp/"$f".mp3
done

输出:
./savemp3.sh
./savemp3.sh: line 3: [: 过多的参数
./savemp3.sh: line 3: [: 过多的参数
./savemp3.sh: line 3: [: 过多的参数
./savemp3.sh: line 3: [: 过多的参数
./savemp3.sh: line 3: [: 过多的参数
./savemp3.sh: line 3: [: 过多的参数
./savemp3.sh: line 3: [: 过多的参数
./savemp3.sh: line 3: [: 过多的参数
./savemp3.sh: line 3: [: 过多的参数
./savemp3.sh: line 3: [: 过多的参数
./savemp3.sh: line 3: [: 过多的参数
./savemp3.sh: line 3: [: 过多的参数
./savemp3.sh: line 3: [: 过多的参数
./savemp3.sh: line 3: [: 过多的参数

然后用sh:
代码:
#!/bin/sh
for f in /dev/shm/firefoxcache/Cache/*; do
    [ `file -bi "$f"` = audio/mpeg* ] && cp -u "$f" /home/xinzhi/"$f".mp3
done

输出:
./savemp3.sh
[: 4: image/png;: unexpected operator
[: 4: application/x-gzip;: unexpected operator
[: 4: application/x-gzip;: unexpected operator
[: 4: image/gif;: unexpected operator
[: 4: application/x-shockwave-flash;: unexpected operator
[: 4: image/png;: unexpected operator
[: 4: application/x-gzip;: unexpected operator
[: 4: audio/mpeg;: unexpected operator
[: 4: application/x-gzip;: unexpected operator
[: 4: image/png;: unexpected operator
[: 4: audio/mpeg;: unexpected operator
[: 4: application/octet-stream;: unexpected operator
[: 4: application/octet-stream;: unexpected operator
[: 4: application/octet-stream;: unexpected operator
[: 4: application/octet-stream;: unexpected operator
xinzhi@xinzhi-desktop:~/桌面$


xinzhi@xinzhi-desktop:/dev/shm/firefoxcache/Cache$ file -bi *
image/png; charset=binary
application/x-gzip; charset=binary
application/x-gzip; charset=binary
image/gif; charset=binary
application/x-shockwave-flash; charset=binary
image/png; charset=binary
application/x-gzip; charset=binary
audio/mpeg; charset=binary
audio/mpeg; charset=binary
application/octet-stream; charset=binary
application/octet-stream; charset=binary
application/octet-stream; charset=binary
application/octet-stream; charset=binary
application/x-gzip; charset=binary
image/png; charset=binary
audio/mpeg; charset=binary
xinzhi@xinzhi-desktop:/dev/shm/firefoxcache/Cache$


不知道是不是bash和sh出错使脚本失效。


页首
 用户资料  
 
7 楼 
 文章标题 : Re: 求脚本:复制a文件夹文件到b文件夹(根据mime-type复制指定类型文件)
帖子发表于 : 2009-11-08 11:19 
头像

注册: 2008-03-05 15:41
帖子: 238
地址: 中国广西防城港
送出感谢: 0 次
接收感谢: 0 次
哈,我成功啦。

代码:
#!/bin/sh
for f in /dev/shm/firefoxcache/Cache/*; do
    [ `file -b --mime-type "$f"` = audio/mpeg ] && cp -u "$f" /home/xinzhi"$f".mp3
done


$f有包含路径,所以我用了些笨方法创建些多余目录。


附件:
Screenshot.png
Screenshot.png [ 448.2 KiB | 被浏览 902 次 ]

页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 7 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译