2011-07-15 12 views
3

の下に隠されたファイルをアーカイブしていない私はアーカイブにしようとしていますフォルダのディレクトリ構造です:ZIPはこちらHOME

DIR構造

HOME 
HOME/.abc 
HOME/FIRST 
HOME/FIRST/.def 

私はsimlpe $PATCH/zip -r -l -x "bac*" abc.zip HOME/*

つを使用しています面白いことに、私は、HOMEの直下に隠れたフォルダをスキップしていて、それを最初のものの下に置きます。私はここで何が欠けていますか?それは私がchosingしているオプションの副作用ですか?事前に感謝してください。

答えて

8

*は、zipユーティリティによって解釈されるのではなく、シェルによって拡張されます。 zipユーティリティを実行する前に、*は非隠しファイルまたはディレクトリのスペースで区切られたリストに置き換えられます。

$PATCH/zipechoに置き換えると、これはシェルのマングリング後に実際にプログラムに渡される引数が表示されます。


あなたはGLOBIGNORE.:..への変数の環境を設定した場合だけでなく、...のマッチングを無効にbashのだろうが、それはまた、自動的にせずに、他の隠しファイルにマッチする「dotglob」を、可能の素敵な効果を持っています.*が必要です。すべて*を使用してください。あなたはこの短い道を行う、または1つのコマンドではできません

GLOBIGNORE=.:..; $PATCH/zip -r -l -x "bac*" abc.zip HOME/*; unset GLOBIGNORE 

注:

GLOBIGNORE=.:.. $PATCH/zip -r -l -x "bac*" abc.zip HOME/* 

そのbashが気づいていないようです

例えば、これはあなたの問題を解決する必要がありますこれは次のコマンドまでです。

+0

を除くそれはHOMEでも、隠しファイルをzip圧縮するように..感謝Delan – Ram

+0

は今どのように私は、コマンドを指定することができますか? HOME /.*はディレクトリにも含まれているので動作しません – Ram

+0

環境変数 'GLOBIGNORE'を'。:.. 'に設定すると、' .'と '..'の一致をbashで無効にするだけでなく、 '。*'を必要とせずに他の隠しファイルとマッチする 'dotglob 'も自動的に有効にする素晴らしい効果があるので、すべてに' * 'を使うことができます。 –

9
zip archiveName -r .* -x "../*" 

トリックSI使用。*と../*正確に問題のthats