The UNIX and Linux Forums  


Go Back   UNIX och Linux Forum > Upp Forum > Shell-programmering och Skript
.
google unix.com



Shell-programmering och Skript Post frågor om ksh, CSH, SH, bash, PERL, PHP, sed, awk och andra skalskript och skal skriptspråk här.

Mer UNIX och Linux Forum Ämnen Du kan hitta Helpful
Tråd Thread Starter Forum Svar Senaste Inlägg
MGET * (obtein filer från aktuell katalog men inte filerna form sub-kataloger) Peter321 Shell-programmering och Skript 0 03-12-2009 11:59
jämföra db zon filer i 2 kataloger richsark Shell-programmering och Skript 2 03-05-2009 11:05
hur många kataloger och filer som finns i en katalog smongam Shell-programmering och Skript 4 01-22-2009 02:47
Jämför filer från två kataloger ravi214u Shell-programmering och Skript 2 07-14-2008 08:04
Hur kan man jämföra två platta filer och få ändrade uppgifter jtshashidhar Shell-programmering och Skript 3 01-29-2006 10:26

Reply
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Sök i denna tråd Omdöme: Thread Rating: 2 votes, 4.50 average. Visningslägen
  #1 (permalänk)  
Old 05-26-2009
bkeep bkeep is offline
Registered User
  
 

Join Date: maj 2009
Ort: Freeport, IL
Inlägg: 9
jämför filerna i två kataloger och produktionen förändrats filer till tredje katalog

Jag har sökt ungefär 30 trådar, en belastning på Google-sidor och kan inte hitta vad jag söker. Jag har några av de delar men inte hela. Jag verkar inte gå att få pusslet att passa ihop.

Jag har tre mappar, varav två innehåller olika versioner av flera filer, dist/file1.php dist/file2.php etc och dist_old/file1.php dist_old/file2.php etc.

Den tredje mappen innehåller bara ändrade filer mellan de två. Om / dist/file1.php avviker från / dist_old/file1.php sedan en fil som heter dist_upgrade/file1.php existerar med samma innehåll som dist/file1.php.

För närvarande är jag manuellt hantera de olika filer med WinMerge och jag skulle vilja automatisera en del av denna om möjligt.

Vad jag skulle vilja göra är att jämföra dist mappen med dist_old mappen då har filer som inte är samma kopieras till dist_upgrade / file.ext behålla mappstrukturen och fullständiga innehållet i den nya filen i mappen dist.

Tack för alla råd,
Vänliga hälsningar,
Brandon
  #2 (permalänk)  
Old 05-26-2009
edgarvm edgarvm is offline
Registered User
  
 

Join Date: maj 2009
Inlägg: 26
Detta kan vara användbart

Kod:
#!/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


Senast redigerad av edgarvm; 05-26-2009 at 07:35..
  #3 (permalänk)  
Old 05-26-2009
JerryHone JerryHone is offline
Registered User
  
 

Join Date: Nov 2006
Ort: UK
Inlägg: 178
Liknande edgarvm talet, men klara nya filer samt olika sådana ...


Kod:
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

Du kommer verkligen få en status 2 om en fil finns men är oläslig också, men jag har ignorerat det som ni kan göra allt läsbar innan du börjar!
  #4 (permalänk)  
Old 05-26-2009
bkeep bkeep is offline
Registered User
  
 

Join Date: maj 2009
Ort: Freeport, IL
Inlägg: 9
Tack för de svar ni är top notch. Jag har gjort några ändringar för att få detta arbetar rekursivt med edgarvm exempel. Jag har också fört JerryHone idé om att ta itu med icke-existerande filer


Kod:
#!/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

Tack för råd.
Hälsningar,
Brandon

Senast redigerad av bkeep; 05-26-2009 at 10:04.. Orsak: Fick det att arbeta med ovanstående kod
  #5 (permalänk)  
Old 08-26-2009
realaaa realaaa is offline
Registered User
  
 

Join Date: Aug 2009
Inlägg: 1
Tack ni bidrog detta script mig mycket!

men idag fick jag veta att det inte kan hantera mellanslag i filnamn ordentligt så jag modifierade den lite hjälp av råd från här:

Unixjunkie Blog: Hantering filnamn med Spaces


skriptet verkar behandla sådana filer korrekt (även om jag inte testa det för mycket):


Kod:
#!/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

skål!
Reply

Komihåglista

Thread Tools Sök i denna tråd
Sök i denna tråd:

Avancerad sökning
Visningslägen Betygsätt denna tråd
Betygsätt denna tråd:

Utstationering Regler
Du får inte efter nya trådar
Du får inte efter svar
Du får inte skicka bilagor
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG] kod
HTML-koden är Av
Trackback är
Pingbacks är
Refbacks är




Alla tider är GMT -4. Klockan är nu 07:28.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Översättningar Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX och Linux Forum Innehållet upphovsrättsskyddat © 1993-2009. All Rights Reserved.Ad förvaltning RedTyger

Content Relevant webbadresser från vBSEO 3.2.0