2017-05-08 63 views
0

猛砸

我不得不從目錄中打印的所有文件和目錄(如參數)和文件,我需要打印如何很多時候這個文件在所有目錄中重複。 例如,如果我有: (我用找到的目錄)如何打印多少次文件中的所有目錄從另一個目錄#bash重複

directory 
directory/dir1 
directory/dir1/file1 
directory/dir1/file2 
directory/file1 

程序應該打印:

directory 
directory/dir1 
directory/dir1/file1 
2 
directory/dir1/file2 
1 
directory/file1 
2 

,我試圖像這樣:

#!/bin/bash 
for i in $*; do 
    for j in `find $i`; do 
     echo $j  
     if [[ -f $j ]]; then 
      s=0 
      for b in `find $i | awk -F/ '{ print $NF }'`; do 
       if [[ "$j | awk -F/ '{ print $NF }'" == "$b" ]]; then 
        ((s++)) 
       fi 
      done 
      echo $s 
     fi 
    done 
done 

但它打印:

directory 
directory/dir1 
directory/dir1/file1 
0 
directory/dir1/file2 
0 
directory/file1 
0 

我知道功能if [[ "$j | awk -F/ '{ print $NF }'" == "$b" ]] 它不能正常工作,但我無法找出一種方法來解決這個問題,我嘗試了很多其他的方式,或者我可以過於複雜這一點,它可以做得更容易。

我希望有人能幫助我(如果可能的話,使用更簡單的解決方案)。

回答

0
find . -type f -print0 | xargs -0 -n1 basename | sort | uniq -c 
     2 file1 
     1 file2 
+0

它的工作原理,謝謝 – JustPaul

+0

你提到你需要目錄,我的解決方案不包括這種情況。但如果它有效,不要忘記接受我的答案。 – grundic

+0

你意識到'-print0'和'-0'這裏是無意義的標誌,因爲'sort'和'uniq'在換行符上分隔。 – 123

相關問題