2012-02-21 5 views
0

私は任意のキャッシュ項目を除く、他のもののうち、私のFirefoxのプロファイルをコピーする簡単なバックアップスクリプトを作成したり、そのプロファイル内のフォルダしようとしています。BASH:特定のキーワードベースのサブディレクトリを除くディレクトリを反復

これは私のDebianベースのcrunchbangシステムです。

十分に簡単に聞こえるが、私はbashのスクリプトに新たなんだ、と私は、これまでに作ってみたが、私はいくつかの入力を取得してみたいほど無粋と扱いにくいです。

は、ここで私がこれまで持っているものです。

#!/bin/bash 

for f in /home/my_name/.mozilla/firefox/*.default/* 
do 
echo "$f level 1" 

if [[ "$f" != "Cache" ]] 
then 
    if [ -d $f ] 
    then 
     for g in $f/? 
     do 
      echo "$g level 2" 
      for h in $g/? 
      do 
      echo "$h level 3" 
       for i in $h/? 
       do 
       echo "$i level 4" 
       for j in $i/? 
       do 
       echo "$j level 5" 
       done 
      done 
     done 
    done 
    fi 
fi 
done 

エコーがありますが、あなたはエラーチェックのために、推測していることがあります。これらはcpステートメントに置き換えられます。私が見

一つの問題は、これは十分に柔軟ではないということです。さらに5ダウンよりもディレクトリが存在する場合、それらは含まれません。私がそれらを含むようにスクリプトを拡張すると、私は問題を一歩進めます。

/home/my_name/.mozilla/firefox/gibberish.default/OfflineCache/?/?/? level 4 

このラインが現れる理由を私は知らないが、私はそれがいけないと考えているん:

もう一つの問題は、私は現在、スクリプトの出力に表示さ1です。

だから私の道を手伝うためのヒント?

+1

あなたが探してしたいの技術は、それは私のチケットかもしれないが、私はそれを実行してみましたし、1(大きな)問題を抱えているようrecursion' – knittl

答えて

2

このジョブは、最高のディレクトリ構造を再帰的にするための標準的なツールがfindあるrsync

rsync -avh --progress --exclude='*Cache/' ~/.mozilla/firefox/ /path/to/your/backup/location/ 
+0

これは見え '​​である:それはまだキャッシュフォルダをコピーしています。 ?.defaultフォルダの中には、約3つのプロファイルフォルダがあります:OfflineCache、startupCache、... – Zaan

+0

@Zaan:複数の '--exclude ='オプションを指定するか、すべてに一致するワイルドカードパターンを見つけなければなりませんあなたのフォルダ名( '--exclude = '* Cache /'')。あなたの質問に投稿されたコードは '' Cache ''だけをフィルタリングしたので、rsyncコマンドを同じように動作させました – knittl

1

に任されています。

find /home/my_name/.mozilla/firefox/*.default/* -name Cache -prune -o -type f -exec echo cp {} dest \; 

あなたが好きなものを見たら、echoを取り出してください。追加の例については、おそらくxargsでgoogleしてください。あなたがcp-tオプションを持っている場合、またfind -execドキュメントの\+を見てください。

+0

これは' Cache'という名前のファイルを見つけ出します。 'Cache'という名前のディレクトリを除外しません(OPが尋ねたもの) – knittl

+0

ありがとうございました。ありがとう、' -prune'を追加しました。 – tripleee

関連する問題