2016-09-14 60 views
0

我已經在目錄上的Linux結構如下:如何找到在目錄中的文件的數量遞歸連同它的目錄名的Linux

-dirA 
    -dir1 
     -dirX 
     -dirY 
    -dir2 
     -dirX 
     -dirY 
    -dir2 
     -dirX 
     -dirY 
    -dir2 
     -dirX 
     -dirY 
    -dir2 
     -dirX 
     -dirY 
    -dir2 
     -dirX 
     -dirY 
    . 
    . 
    . 
    . 
    . 
    . 
    . 
    . 
    . 
    -dirn 
     -dirX 
     -dirY 

我想要得到的文件的數量詳情如下或任何格式:

加載dirX和dirY中的
dir1 
dirX = count 
dirY = count 

dir2 
dirX = count 
dirY = count 

dir3 
dirX = count 
dirY = count 

...... 
...... 

dirn 
dirX = count 
dirY = count 

注意到這裏的文件夾名稱相同的內部子目錄DIR1,DIR2 ..... DIRN

我用下面的命令,但它給累加結果:

find $DIR -exec stat -c '%F' {} \; | sort | uniq -c | sort -rn 

find . -type f | wc -l 

回答

0

一個簡單while循環應該足夠

find "$DIR" -type d -print0 | 
    while IFS= read -r -d '' path; do 
     echo -e "$(ls -A -- "$path" | wc -l)\t$path" 
    done 

如果你希望他們按文件數量排序,你可以在命令末尾附加一個| sort -n (緊隨done關鍵字)。

+0

這應該保存爲shell腳本並運行 – virendrao

+0

@virendrao如果你願意,你可以做到這一點。只需用'「$ 1」替換'「$ DIR」'並將其保存爲'myscript.sh'並將其作爲腳本運行即可。例如'./myscript.sh「/ path/to/directory」'。您也可以直接運行它:只需將目錄路徑替換爲「$ DIR」,並將其粘貼到終端中即可。 – redneb

相關問題