![]() |
|
|
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午後 |
![]() |
|
|
LinkBack | スレッドツール | このスレッドを検索 |
評価:
|
表示モード |
|
|
|
||||
|
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 。 あらゆるアドバイスをありがとう、 よろしく、 ブランドン |
|
||||
|
と同様に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を取得しますが、私の前に起動することができますが、すべてを無視して読める! |
|
||||
|
皆さんしているトップノッチの回答いただきありがとうございます。私はこの動作させるには再帰的に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午後..理由:上記のコードでの作業に手に入れた |
|
||||
|
おかげで皆さん、このスクリプトは私をたくさん助けて! しかし、今日の私は、ファイル名が正しくので、変更にスペースを処理できないことがわかったそれは少しここからアドバイスを使用して: 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
乾杯! |