2013-02-26 31 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