2013-02-26 78 views
1

我在centos 6盒上有samba共享目录,我只想确保共享目录中的所有文件必须是Windows可执行文件(.exe), 有没有一种方法可以在保留'application/x-dosexec'mime类型文件并删除剩余部分后,根据mimetype搜索samba共享上的所有目录。脚本根据MIME类型递归搜索目录中的文件

我试图

for i in /mnt/storage/SAMBA/* 
do 
    [ x"$(file --mime -b "$i")" != application/x-dosexec ] && echo rm "$i" 
done 

,但他们不递归搜索

回答

1

使用find,选项-type f将搜索范围限制为只文件:

find /mnt/storage/SAMBA/ -type f | while read i ; do ... ; done 

请注意,你忘了您的比较中的x。它需要是xapplication/x-dosexec,否则您将删除所有文件。

+0

** bold ** find/mnt/storage/SAMBA/-type f |同时阅读我; do [x“$(file --mime-type -b”$ i“)”!=“application/octet-stream”] && echo rm“$ i”; done ** bold ** 上述脚本的结果: rm /mnt/storage/SAMBA/exe/9000EastAsia_PBr5.0.0_rel1137_PL5.2.0.64_A5.0.0.exe rm/mnt/storage/SAMBA/video/KARA-没有人1080HD(HD).mp4 rm/mnt/storage/SAMBA/mp3/Peter Cetera_Have You Ever Been In Love.mp3 文件命令的结果: file --mime -type -b/mnt/storage/SAMBA/exe/9000EastAsia_PBr5.0.0_rel1137_PL5.2.0.64_A5.0.0.exe application/octet-stream – 2013-02-26 09:57:18

+0

Again:请注意,您在比较中忘记了“x”。它需要'xapplication/x-dosexec',否则你将删除所有文件。 – Perleone 2013-02-26 09:58:21

+0

哎呀..对不起,我的愚蠢,非常感谢@perleone – 2013-02-26 10:01:27