2013-09-29 29 views
0

有一個問題,希望只是我犯了一個愚蠢的錯誤。試圖忽略以「。」開頭的文件。但腳本不工作

我有一個腳本,我正在搜索指定的mxf文件。同時,我嘗試忽略以句點(。)開頭的文件,因爲這些是我不需要搜索的隱藏文件。我不知道我在做什麼錯了腳本。當我的腳本搜索驅動器並運行到我沒有權限並試圖忽略的文件或文件夾時,我一直收到錯誤。誰能幫忙?腳本如下。

echo Searching for digitized INTV footage... 
find /Volumes/TestingTranscode*   \ 
    -type f \(       \ 
     -iname "*V01.*.mxf" !    \ 
     -iname "Avid_Mob*" !    \ 
     -iname ".*" !      \ 
     -ipath "*Creating*"    \ 
    \)         \ 
    -exec /Users/admin/TestingTranscode/01_BashScripts/postfind_gw_digitize.sh {} \; 
+0

可能是你錯過了,不包括隱藏的**目錄**? – jkshah

回答

0

使用剪枝開關不包括一個完整的子樹:

發現。 「*」 -name -prune -o ...

我想類似的東西應該工作:

find /Volumes/TestingTranscode*   \ 
    -name ".*" -prune -o \ 
    -type f \(       \ 
     -iname "*V01.*.mxf" !    \ 
     -iname "Avid_Mob*" !    \ 
     -ipath "*Creating*"    \ 
    \)         \ 
    -exec 
    -/Users/admin/TestingTranscode/01_BashScripts/postfind_gw_digitize.sh {} 
    -/\; 
+0

對不起,我是超級綠人。我如何將它應用於我的腳本? – Floyd

+0

我修改了我的答案。 (該評論不支持代碼示例的好看法。) –

0

快速的問題:

你應該向下降落與長一段時間開始目錄作爲文件不?或者,你是否也想排除以句點開頭的目錄?

要排除一段開頭的文件:

$ find . \! -name ".*" -type f 

要排除一段開頭的任何文件或目錄:

$ find . \! -path "*/.*" -name "*.mfx" -type f 

如果你太花哨,你最好關閉切換到Perl之類的東西:

#! /usr/bin/env perl 
use strict; 
use warnings; 
use File::Find; 
use feature qw(say); 

find (sub { 
      return unless -f;      # Must be a file 
      return if $File::Find::Name =~ m|/\.|; # Remove files & dirs that starts with "." 
      return unless /\.mfx$/i;    # Only MFX files 
      return ....        # More requirements.... 
      say $File::Find::name; 
     }, "." 
); 

1/2打左右的腳本將保存當事情變得過於複雜時,你需要付出很大的努力來試圖糾正find命令語法。