The UNIX and Linux Forums  

Go Back   UNIXおよびLinuxフォーラム > トップフォーラム > シェルプログラミングとスクリプティング
Googleのunix.com



シェルプログラミングとスクリプティング KSH 、 CSH 、 shに、 bashの、はPerl 、 PHPは、削除するsed 、 Awkの、他のシェルスクリプトやシェルスクリプト言語についての質問の投稿はこちら。

その他のUNIXおよびLinuxフォーラムトピックは参考にすること
スレッド スレッドスターター フォーラム 返信 最後の投稿
現在のディレクトリからmget * ( obteinファイルではなく、ファイル形式のサブディレクトリ) Peter321 シェルプログラミングとスクリプティング 0 2009年3月12日 11:59午前
2デシベルゾーンのディレクトリにファイルを比較 richsark シェルプログラミングとスクリプティング 2 2009年3月5日 11:05午前
何のディレクトリとファイルがあるディレクトリにしている smongam シェルプログラミングとスクリプティング 4 2009年1月22日 02:47午後
2つのディレクトリからファイルを比較 ravi214u シェルプログラミングとスクリプティング 2 2008年7月14日 08:04午前
どのように比較すると2つのフラットファイルのデータ変更を取得 jtshashidhar シェルプログラミングとスクリプティング 3 2006年1月29日 10:26午後

Reply
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek を搭載 Powered by Google
 
LinkBack スレッドツール このスレッドを検索 評価: Thread Rating: 2 votes, 4.50 average. 表示モード
  #1固定リンク)  
Old 2009年5月26日
bkeep bkeep is offline
登録ユーザー
  
 

参加日: 2009年5月
場所:フリー、イル
投稿数: 9
2つのディレクトリ内のファイルを比較すると出力の3番目のディレクトリにファイルを変更

私は30のスレッドは、 Googleのページの読み込みや検索が私の探している見つけることができません。私はいくつかの部品ではなく、全体をしている。私は一緒にパズルのように健康になることはできません。

私は、そのうちの2種類の異なる複数のファイルのバージョンは、 dist/file1.php dist/file2.phpなどとdist_old/file1.php dist_old/file2.phpなどを含む3つのフォルダがある

3番目のフォルダには、 2つの間に変更されたファイルのみが含まれています。もし/ dist/file1.php / dist_old/file1.phpしdist_upgrade/file1.phpという名前のファイルを異なるdist/file1.phpと同じ内容を持つファイルが存在する。

現在私は、手動で別のファイルを使用してwinmerge午前対処可能であればいくつかの私はこれを自動化したいと思います。

私はdist_oldフォルダにはdistフォルダの比較ですdist_upgradeにコピーし、その後には、同じではないファイルが何になさいます/ディレクトリ構造とはdistフォルダ内の新しいファイルの完全な内容を保持file.ext 。

あらゆるアドバイスをありがとう、
よろしく、
ブランドン
  #2固定リンク)  
Old 2009年5月26日
edgarvm edgarvm is offline
登録ユーザー
  
 

参加日: 2009年5月
投稿: 26
これは役立つ可能性がある

コード:
#!/bin/sh
cd dist
for a in `ls`; do
   
   if [ ! -f "../dist_old/$a" ]; then
       continue
   fi
   diff $a ../dist_old/$a > /dev/null
   if [[ "$?" == "1" ]]; then
      cp $a ../dist_upgrade
   fi
done


編集edgarvmで最終; 2009年5月26日に 07:35午後..
  #3固定リンク)  
Old 2009年5月26日
JerryHone JerryHone is offline
登録ユーザー
  
 

参加日: 2006年11月
場所:英国
投稿数: 178
と同様にedgarvmだが、新しいファイルだけでなく、別のものに対処する...


コード:
new=/dist
old=/dist_old
diff=/dist_upgrade

cd $new
for f in *f
do
# Diff the files - ignore the output...
    diff $f $old > /dev/null 2>&1
# ...but get the status
    status=$?
    if [ $status -eq 0 ] ; then
# Files are identical - don't copy the file
        echo $f unchanged
    elif [ $status -eq 1 ] ; then
# Files differ - copy new file
        echo $f changed
        cp $f $diff
    elif [ $status -eq 2 ] ; then
# Old file doesn't exist - copy new file
        echo old $f does not exist
        cp $f $diff
    fi
done

ファイルが読めない場合が存在するとしても、実際にはステータス2を取得しますが、私の前に起動することができますが、すべてを無視して読める!
  #4固定リンク)  
Old 2009年5月26日
bkeep bkeep is offline
登録ユーザー
  
 

参加日: 2009年5月
場所:フリー、イル
投稿数: 9
皆さんしているトップノッチの回答いただきありがとうございます。私はこの動作させるには再帰的にedgarvmの例を使って、いくつかの変更をしている。私も非存在しないファイルを扱うJerryHoneについての考えを取り入れ


コード:
#!/bin/bash

# setup folders for our different stages
DIST=/var/www/localhost/htdocs/dist/
DIST_OLD=/var/www/localhost/htdocs/dist_old/
DIST_UPGRADE=/var/www/localhost/htdocs/dist_upgrade/

cd $DIST

list=`find . -type f`

for a in $list; do
   if [ ! -f "$DIST_OLD$a" ]; then
        cp --parents $a $DIST_UPGRADE
      continue
   fi
   diff $a $DIST_OLD$a > /dev/null
   if [[ "$?" == "1" ]]; then
        # File exists but is different so copy changed file
        cp --parents $a $DIST_UPGRADE
   fi
done

アドバイスをありがとうございます。
よろしく、
ブランドン

編集bkeepで最終; 2009年5月26日に 10:04午後..理由:上記のコードでの作業に手に入れた
  #5固定リンク)  
Old 2009年8月26日
realaaa realaaa is offline
登録ユーザー
  
 

参加日: 2009年8月
記事: 1
おかげで皆さん、このスクリプトは私をたくさん助けて!

しかし、今日の私は、ファイル名が正しくので、変更にスペースを処理できないことがわかったそれは少しここからアドバイスを使用して:

Unixjunkieブログ:処理ファイル名をスペースで


このスクリプトは適切なファイルを処理すると思われる(ただし、私が多すぎる)それをテストしていない:


コード:
#!/bin/bash

# setup folders for our different stages
DIST=/var/www/localhost/htdocs/dist/
DIST_OLD=/var/www/localhost/htdocs/dist_old/
DIST_UPGRADE=/var/www/localhost/htdocs/dist_upgrade/

cd $DIST

find . -type f | while read filename
do
   if [ ! -f "$DIST_OLD$filename" ]; then
        cp --parents "$filename" $DIST_UPGRADE
      continue
   fi
   diff "$filename" "$DIST_OLD$filename" > /dev/null
   if [[ "$?" == "1" ]]; then
        # File exists but is different so copy changed file
        cp --parents $filename $DIST_UPGRADE
   fi
done

乾杯!
Reply

ブックマーク

スレッドツール このスレッドを検索
このスレッドを検索

高度な検索
表示モード このスレッド
このスレッド

投稿ルール
あなた ことができない。 新しいスレッドを投稿
あなた ことができない。 返信の投稿
あなた ことができない。 添付ファイルの投稿
あなた ことができない。 自分の投稿を編集

BBコード なる 〜の上に
スマイリー なる 〜の上に
[イメージ] コードは 〜の上に
HTMLコードは、 オフ
トラックバック なる 〜の上に
ピングバック なる 〜の上に
Refbacks なる 〜の上に




すべてGMT -4です。現在の時刻は 12:02午前


提供: vBulletin、著作権© 2000 - 2006、Jelsoft企業株式会社。言語翻訳による電源
vBCredits v1.4著作権© 2007 - 2008 、 PixelFXスタジオ
は、 UNIXおよびLinuxフォーラムのコンテンツ著作権© 1993 〜 2009 。すべての権利を管理しReserved.Ad RedTyger

コンテンツ関連のURLで vBSEO 3.2.0