Sponsored Content
Top Forums Shell Programming and Scripting Help with selecting files from "diff" output Post 302806813 by DGPickett on Monday 13th of May 2013 05:16:09 PM
Old 05-13-2013
I would use comm, sort, find to compare file lists of each subtree, sed to separate the both from the a only and b only lists for futher processing or reporting, and cmp to decide if the both files differ:
Code:
comm <(
    cd xx
    export LC_ALL=C
    find * -type f|sort -u
  ) <(
    cd xx_Arc
    export LC_ALL=C
    find * -type f|sort -u
  )| sed '
    s/^\t\t//
    t
    s/^\t//
    t b
    w xx_only
    d
    :b
    w xx_Arc_only
    d
   ' | while read f
do
  if [ "" = "$(cmp xx/$f xx_Arc/$f 2>&1)" ]
  then
    ....
  fi
done

LC_ALL=C ensures a binary sort for comm. Diff is for humans, mostly. Bash, or ksh on /dev/fd/# systems, to get the <().
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

reformat the output from "diff" command

Hi all, I use the diff command and got the output: $> diff -e file1.txt file2.txt 15a 000675695 Yi Chen Chen 200520 EASY 50 2/28/05 0:00 SCAD Debit Card Charge . 12a 000731176 Sarah Anderson 200520 EASY 25 2/28/05 0:00 SCAD Debit Card Charge . 11a... (5 Replies)
Discussion started by: CamTu
5 Replies

2. UNIX for Dummies Questions & Answers

diff on c-source file always returns "files differ"

I have a c-source file that is evidently seen by unix as a binary file. When doing a diff between it and older versions with substantial differences, diff will only return "files differ". I have tried cat-ing the file to another file; tried using the "-h" on the diff; I have tried ftp-ing it... (7 Replies)
Discussion started by: C-Prog-Man
7 Replies

3. Debian

Debian: doubt in "top" %CPU and "sar" output

Hi All, I am running my application on a dual cpu debian linux 3.0 (2.4.19 kernel). For my application: <sar -U ALL> CPU %user %nice %system %idle ... 10:58:04 0 153.10 0.00 38.76 0.00 10:58:04 1 3.88 0.00 4.26 ... (0 Replies)
Discussion started by: jaduks
0 Replies

4. Shell Programming and Scripting

error "integer expression expected" when selecting values

dear members, I am having some difficulties with an automation script that I am writing. We have equipments deployed over our network that generate status messages and I was trying an automated method to collect all information. I did a expect script that telnet all devices, logs, asks for... (4 Replies)
Discussion started by: jorlando
4 Replies

5. Solaris

significance of "+" char in SunOS "ls -l" output

Hi, I've noticed that the permissions output from "ls -l" under SunOS differs from Linux in that after the "rwxrwxrwx" field, there is an additional "+" character that may or may not be there. What is the significance of this character? Thanks, Suan (6 Replies)
Discussion started by: sayeo
6 Replies

6. UNIX for Dummies Questions & Answers

Explanation of "total" field in "ls -l" command output

When I do a listing in one particular directory (ls -al) I get: total 43456 drwxrwxrwx 2 root root 4096 drwxrwxrwx 3 root root 4096 -rwxrwxr-x 1 nobody nobody 3701594 -rwxrwxr-x 1 nobody nobody 3108510 -rwxrwxr-x 1 nobody nobody 3070580 -rwxrwxr-x 1 nobody nobody 3099733 -rwxrwxr-x 1... (1 Reply)
Discussion started by: proactiveaditya
1 Replies

7. Shell Programming and Scripting

"Join" or "Merge" more than 2 files into single output based on common key (column)

Hi All, I have working (Perl) code to combine 2 input files into a single output file using the join function that works to a point, but has the following limitations: 1. I am restrained to 2 input files only. 2. Only the "matched" fields are written out to the "matched" output file and... (1 Reply)
Discussion started by: Katabatic
1 Replies

8. Shell Programming and Scripting

awk command to replace ";" with "|" and ""|" at diferent places in line of file

Hi, I have line in input file as below: 3G_CENTRAL;INDONESIA_(M)_TELKOMSEL;SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL My expected output for line in the file must be : "1-Radon1-cMOC_deg"|"LDIndex"|"3G_CENTRAL|INDONESIA_(M)_TELKOMSEL"|LAST|"SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL" Can someone... (7 Replies)
Discussion started by: shis100
7 Replies

9. Shell Programming and Scripting

Delete all log files older than 10 day and whose first string of the first line is "MSH" or "<?xml"

Dear Ladies & Gents, I have a requirement to delete all the log files in /var/log/test directory that are older than 10 days and their first line begin with "MSH" or "<?xml" or "FHS". I've put together the following BASH script, but it's erroring out: for filename in $(find /var/log/test... (2 Replies)
Discussion started by: Hiroshi
2 Replies

10. Shell Programming and Scripting

Bash script - Print an ascii file using specific font "Latin Modern Mono 12" "regular" "9"

Hello. System : opensuse leap 42.3 I have a bash script that build a text file. I would like the last command doing : print_cmd -o page-left=43 -o page-right=22 -o page-top=28 -o page-bottom=43 -o font=LatinModernMono12:regular:9 some_file.txt where : print_cmd ::= some printing... (1 Reply)
Discussion started by: jcdole
1 Replies
cmp(1)							      General Commands Manual							    cmp(1)

NAME
cmp - Compares two files SYNOPSIS
cmp [-l | -s] file1 file2 STANDARDS
Interfaces documented on this reference page conform to industry standards as follows: cmp:XCU5.0 Refer to the standards(5) reference page for more information about industry standards and associated tags. OPTIONS
Prints the byte number (decimal) and the differing bytes (octal) for each difference. Does not print data for differing files; returns only an exit value. OPERANDS
The path name of a file to be compared. The path name of a file to be compared. DESCRIPTION
The cmp command compares two files. If file1 or file2 is - (dash), standard input is used for that file. It is an error to specify - for both files. By default, the cmp command prints no information if the files are the same. If the files differ, cmp prints the byte and line number where the difference occurred. The cmp command also specifies whether one file is an initial subsequence of the other (that is, if the cmp command reads an End-of-File character in one file before finding any differences). Usually, you use the cmp command to compare nontext files and the diff command to compare text files. Note that bytes and lines reported by cmp are numbered from 1. EXIT STATUS
The following exit values are returned: The files are identical. The files differ. This includes files of different lengths that are identical in the first part of both files. An error occurred. EXAMPLES
To determine whether two files are identical, enter: cmp prog.o.bak prog.o The preceding command compares the files prog.o.bak and prog.o. If the files are identical, a message is not displayed. If the files differ, the location of the first difference is displayed. For instance: prog.o.bak prog.o differ: byte 5, line 1 If the message cmp: EOF on prog.o.bak is displayed, then the first part of prog.o is identical to prog.o.bak, but there is addi- tional data in prog.o. If the message cmp: EOF on prog.o is displayed, it is prog.o.bak that is the same as prog.o but also contains addition data. To display each pair of bytes that differ, enter: cmp -l prog.o.bak prog.o This compares the files and then displays the byte number (in decimal) and the differing bytes (in octal) for each difference. For example, if the fifth byte is octal 101 in prog.o.bak and 141 in prog.o, then the cmp command displays: 5 101 141 . . . ENVIRONMENT VARIABLES
The following environment variables affect the execution of cmp: Provides a default value for the internationalization variables that are unset or null. If LANG is unset or null, the corresponding value from the default locale is used. If any of the internationalization vari- ables contain an invalid setting, the utility behaves as if none of the variables had been defined. If set to a non-empty string value, overrides the values of all the other internationalization variables. Determines the locale for the interpretation of sequences of bytes of text data as characters (for example, single-byte as opposed to multibyte characters in arguments). Determines the locale for the for- mat and contents of diagnostic messages written to standard error. Determines the location of message catalogues for the processing of LC_MESSAGES. SEE ALSO
Commands: comm(1), bdiff(1), diff(1), diff3(1), sdiff(1) Standards: standards(5) cmp(1)
All times are GMT -4. The time now is 12:34 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy