1

zip アーカイブに次のフォルダーの内容があります。

ca_ES
cs_CZ
da_DK
de_CH
de_DE
el_GR
en_GB
es_ES
fi_FI
fr_FR
gl_ES
it_IT
lv_LV
mt_MT
nb_NO
nl_NL
pt_PT
ro_RO
sk_SK
sl_SI
sq_AL
sv_SE
tr_TR
vi_VN
get-new-strings.sh
lang_check.php
lang_check.txt
language_list.txt

不要なディレクトリとファイルを除外するこのコマンドを使用してファイルを解凍しています。

unzip -q ${ZIP_FILE} -x ${FOLDER_PATH}/documentation/* ${FOLDER_PATH}/library/pdf/help/* ${FOLDER_PATH}/library/pdf/samples/*

現在、上記のディレクトリ内のすべてのファイルとフォルダーを除外しようとしていますが、ディレクトリen_GBes_ES.

これを読んだ後、次のことを試しました:

unzip -q ${ZIP_FILE} -x ${FOLDER_PATH}/documentation/* ${FOLDER_PATH}/library/pdf/help/* ${FOLDER_PATH}/library/pdf/samples/* ${FOLDER_PATH}/lang/[!e][!ns]_*

しかし、解凍されたディレクトリの内容は次のようになります。

cs_CZ
el_GR
en_GB
es_ES
get-new-strings.sh
lang_check.php
lang_check.txt
language_list.txt
  • cs_CZel_GRおよびファイルがその式と一致せず、許可されているのはなぜですか?
4

1 に答える 1

2

csどちらもパターンに一致しelません。[!e][!ns]

unzip は pattern に一致するすべてのファイルを除外します[!e][!ns]_*。このパターン ファイル (またはディレクトリ パス) を一致させるには、次の条件を満たす必要があります。

  • 最初の記号はありませんe
  • 2 番目の記号がnorではないs
  • 3 番目の記号は_(アンダースコア)

3 つの要件すべてに一致するファイルのみが、解凍結果から除外されます。cs_CZ、たとえば、1 番目と 3 番目のみに一致します。

更新 (解決策の提案):うまくいくかもしれない醜い解決策は、3 つのパターンで除外されます。すべてのフォルダーが zip ファイルのルートにあると仮定します。

unzip -q ${ZIP_FILE} -x [!e]?* ?[!ns]* ??[!_]*

UPDATE 2 (相対パス):これは機能するはずです:

unzip -q ${ZIP_FILE} -x ${FOLDER_PATH}/documentation/* ${FOLDER_PATH}/library/pdf/help/* ${FOLDER_PATH}/library/pdf/samples/* ${FOLDER_PATH}/lang/[!e]?* ${FOLDER_PATH}/lang/?[!ns]* ${FOLDER_PATH}/lang/??[!_]*

en_これにより、またはディレクトリes_内で始まるすべてのファイルとフォルダが残ることに注意してください${FOLDER_PATH}/lang

于 2013-01-10T08:36:34.070 に答える