我是Bash新手,需要幫助。比較兩個存檔文件BashShell
我需要創建一個shell腳本來比較兩個gzip壓縮文件。對於每個檔案文件中的每個文件或目錄(即使在已存檔的子目錄中),該腳本應驗證其他檔案中是否存在同名的文件/目錄。在缺少目錄的情況下,忽略該目錄中缺少的文件或子目錄。該腳本應列出在其他檔案中沒有匹配的所有文件的名稱。
比較時檔案arch1.tar.gz和archive2.tar.gz和在archive.tar.gz和c找到不同的文件AA/A.TXT,BB/b.txt腳本的輸出.TXT v arch2.tar.gz:
arch1.tar.gz:AA/A.TXT
arch1.tar.gz:BB/b.txt
arch2.tar。 gz:c.txt
在這裏我有什麼:
#!/bin/bash
$1
$2
tar tf $1>> list1.txt
tar tf $2>> list2.txt
comm -23 <(sort list1.txt -o list1.txt | uniq) <(sort list2.txt -o list2.txt| uniq)
diff list1.txt list2.txt>>contestboth
的事情是,我不能爲輸出圖像的任何東西。
如果使用'-o'進行排序,那麼它不會寫入標準輸出,所以這些'| uniq管道不可能工作。此外,前兩行「$ 1」和「$ 2」正嘗試執行腳本的第一個和第二個參數,作爲可能不是您想要的命令(如果甚至有腳本的參數,他們是)。這就是說我不明白你的最後一句話是什麼意思。 – 2014-12-03 22:04:17
使用選項「-o」與輸出到'uniq'的管道結合是沒有意義的。你應該使用'sort -u',它已經做了uniq功能。 – Alfe 2014-12-03 22:04:56