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 {} \;
4

2 回答 2

0

使用 prune 开关排除完整子树:

寻找 。-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 {}
    -/\;
于 2013-09-29T22:13:26.797 回答
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;
      }, "."
 );

find当事情变得太复杂时,大约 1/2 多行脚本将为您节省大量精力来尝试使命令语法正确。

于 2013-09-29T23:01:51.993 回答