2011-10-15 75 views
0

嗨,我有兩個目錄a1dir1和a1dir2。我想查找每個目錄唯一的文件。這是雙方UNIX-使用'查找'來查找文件的副本

$ ls -al ~david/a1dir1 --time-style=long-iso 
total 56 
drwxr-xr-x 4 david users 4096 2011-10-11 21:20 . 
drwx--x--x 12 david users 4096 2011-10-03 16:42 .. 
-rw------- 1 david users 60 2011-09-20 17:43 F3.DAT 
-rw------- 1 david users 40 2011-09-20 17:43 f1 
-rw------- 1 david users 270 2011-09-20 17:43 f2.c 
-rwx------ 1 david users 7539 2011-09-20 17:43 make.socket 
-rw------- 1 david users 418 2011-09-20 17:43 make.socket.c 
-rw------- 1 david users 11843 2011-09-20 17:43 prog1 
-rw------- 1 david users 138 2011-09-20 17:43 prog1.c 
lrwxrwxrwx 1 david users  4 2011-10-11 21:17 s.link -> f2.c 
drwx------ 2 david users 4096 2011-09-20 17:43 test1.dir 
drwx------ 2 david users 4096 2011-09-20 17:43 test3.dir 
srwx------ 1 david users  0 2011-10-11 21:18 unix.socket 

$ ls -al ~david/a1dir2 --time-style=long-iso 
total 192 
drwxr-xr-x 5 david users 4096 2011-10-11 21:23 . 
drwx--x--x 12 david users 4096 2011-10-03 16:42 .. 
-rw------- 1 david users  39 2011-09-20 17:43 .hidden.file 
-rw------- 1 david users  60 2011-09-20 17:43 F3.DAT 
-rw------- 1 david users  40 2011-09-20 17:43 f1 
-rw------- 1 david users  88 2011-09-20 17:43 file2 
-rwx------ 1 david users 7539 2011-09-20 17:43 make.socket 
-r-------- 1 david users 135838 2011-09-20 17:43 phones 
-rw------- 1 david users 138 2011-09-20 17:43 prog1.c 
-rw------- 1 david users 120 2011-09-20 17:43 prog2.c 
lrwxrwxrwx 1 david users  4 2011-10-11 21:23 s.link -> f2.c 
drwx------ 2 david users 4096 2011-09-20 17:43 test1.dir 
drwx------ 2 david users 4096 2011-09-20 17:43 test2.dir 
drwx------ 2 david users 4096 2011-09-20 17:43 test3.dir 

(我通過a1dir1和a1dir2爲arguements)我試過的列表:

for file in $(ls -al $1) 
do 
    find $2 -name "$file" 2> myerrors 
done 

雖然這個代碼只是輸出在a1dir1每一個文件? 任何幫助,將不勝感激:)

回答

0

沒有找到一個例子可以是:

diff -q trunk tmp/trunk | grep -v Common | grep -v differ 
+0

好事情是,th是因爲我的教授還沒有教過普通和不同的選擇,因此我不能使用它們。我必須完全按照他的演示格式化輸出。我已經嘗試了大約三天,但很難做到這麼簡單,因爲他沒有教過很多東西。 – user614573

+0

對不起,我沒有意識到這些只是參數,我曾經看到引用 – user614573

0

你可以嘗試使用diffdircmp取決於你的OS /可用的軟件。下面是與GNU DIFF一個例子:

diff --brief dir1 dir2 

編輯

從您的評論,試試這個:

diff --brief dir1 dir2 | \ 
cut -c 9- | \ 
awk -F': ' '{print $1"/"$2}' | \ 
while read filename 
do 
    ls -ld $filename 
done 
+0

中的參數我必須能夠正如我的教授想要的格式。我已經嘗試列出兩個目錄並將它們管道化爲文件並使用diff,但是我必須顯示關於每個文件 – user614573

+0

@ user614573的所有信息,請參閱我在「編輯」中提出的建議。 – imm

+0

好吧,謝謝你,更好的工作,但事情是我不能使用「awk」,我爲什麼它很難,因爲我不能只比較文件名與這個或「sed」就像我試過 – user614573

0

這不帶空格也不過程子目錄處理的文件名,但無論如何應比你的代碼跑得更好:

for file in $(ls -A $1) 
do 
    ls -l $2/$file 2>/dev/null 
done 
+0

那麼這仍然沒有輸出正確的文件,它生成F3.DAT,f1,make.socket,prog1.c和s.link - > f2.c 這就是我的問題貫穿每一次修改我要麼得到太多的文件,要麼顯示不夠。例如,F3.DAT文件我永遠無法得到正確的結果 – user614573

+0

即使我將一個目錄的內容列出到一個文件中,我也會遍歷第二個目錄中的每個文件並將其名稱與文本文件進行比較,它會指出那些裏面沒有找到 – user614573

+0

對不起,我忽略了你的要求,只是試圖修復你的腳本。 – jlliagre