2014-11-06 82 views
0

編寫一個腳本來比較兩個目錄中的文件,忽略與添加空白行,空格和製表符相關的更改,並在excludeFiles中使用通配符,以排除不必要文件的比較。指定爲參數的文件,記下這些文件的名稱,它們的i節點和創建日期。Bash。使用差異

我知道如何做第一部分(點之前)。

diff -rwBd -X excludeFiles mydir1 mydir2 > changes.diff 

但不明白怎麼做第二部分「作爲一個參數指定的文件,寫下這些文件,它們的i節點,和創建日期的名字。」 ??我想我需要使用ls ....

回答

1

你可以忽略DIFF輸出(-q),獲取文件名,並使用ls i節點(-i)和的ctime(-c)

$ diff -rwBdq -X excludeFiles mydir1 mydir2 | awk '{print $2" "$4}' | xargs ls -lic 
2415432 -rw-r--r-- 1 user group 4163 Nov 6 15:21 mydir1/file1 
2415434 -rw-r--r-- 1 user group 1042 Nov 6 15:21 mydir2/file1 
2415433 -rw-r--r-- 1 user group 4163 Nov 6 15:21 mydir1/file2 
2415435 -rw-r--r-- 1 user group 1042 Nov 6 15:21 mydir2/file2 
+1

HTTP ://ashok-linux-tips.blogspot.com/2012/04/how-to-get-file-creation-time-in-linux.html。在EXT2/3獲得創作時間是不可能的,我認爲,但它是EXT4。 debugfs命令使用inode#。 ls -lic會改變每次文件更改的時間 – 2014-11-06 16:27:56

+0

是的,你是對的,但希望OP可以使用它作爲起點,ctime是最接近我們可以得到沒有額外的信息 – ISanych 2014-11-06 16:45:50