0

ディレクトリ内のすべてのTIFFを再帰的に検索する必要がありますが、「」で終わるアーティファクト(基本的にはすべての隠しファイル)を無視します.tif。このコマンド:

find . -type f -name '*.tif' ! -name '.*'

コマンドラインで希望どおりに動作しますが、bashスクリプト内では何も見つかりません。私は、googleshpereで考えたり、推奨したりすることができる、ほぼすべてのエスケープ順列を 置き換え!てみました。たとえば、一重引用符を省略しました。明らかに、何かが足りないので、助けていただければ幸いです。 。-and -not.\*

編集:これがスクリプトの重要な部分です。検索を実行しているディレクトリはパラメータ化されていますが、ハードコードされた状態でデバッグしています。違いはありません:

#!/bin/bash
RECURSIVE=1
DIR=$1

#get the absolute path to $DIR
DIR=$(cd $DIR; pwd)

FIND_CMD="find $DIR -type f -name '*.tif' ! -name '.*'"
if [ $RECURSIVE == 1 ]; then
    FIND_CMD="$FIND_CMD -maxdepth 1"
fi

for in_img in $($FIND_CMD | sort); do
    echo $in_img # for debugging
    #stuff
done
4

2 に答える 2

1

これは、式を変数に格納することに関連していました。解決策は を使用することevalでした。もちろん、これはとにかく正しいことです。for ループの開始点を除いて、すべてが上記と同じです。

for in_img in $(eval $FIND_CMD | sort); do
    #stuff
done
于 2012-06-18T22:36:33.253 に答える
0

隠しファイルを見つけないようにするには、次を使用できます。

 find . \( ! -regex '.*/\..*' \) -type f -name "*.tif"

ファイル名をチェックし、隠しファイルであるドットで始まるファイル (括弧内の!) を表示しません。

于 2012-06-18T21:43:40.107 に答える