2016-04-18 16 views
1

私は現在、特定のディレクトリにあるサブディレクトリのうち、最大のファイルをリストしています。 私は(Debianの中で)次のコマンドを入力して、ディレクトリ内の最大ファイルリストに成功した:私は、シェル・ファイル(searchHelper.sh)でコマンドを入力すると、以下のコマンドを実行すると、戻ってくると予想各ディレクトリの中で最大のファイルを見つける

find . -type f -printf "%p\n" | ls -rS |tail -1 

を各サブディレクトリに対して予想されるファイル名:

find -type d -execdir ./searchHelper.sh {} + 

は、残念ながらそれは各サブディレクトリのための最大のファイルを返しませんが、何か他のもの。

各サブディレクトリの中で最も大きなファイルのファイル名(絶対パス付き)を取得するヒントを得ることができますか?事前

+0

ですかこれに 'find'を使う必要がありますか? –

+0

いいえ....私はそれが良い可能性があると思った。何か歓迎です – JohnnyOh

答えて

1

多くのおかげで、この安全でテストしたバージョンに試してみて:

find "$(pwd)" -depth -type f -printf "d%h\0%s %p\0" | awk -v RS="\0" ' 
    /^d/ { 
    directoryname=substr($0,2); 
    } 
    /^[0-9]/ { 
    if (!biggestfilesizeindir[directoryname] || biggestfilesizeindir[directoryname] < $1) { 
     biggestfilesizeindir[directoryname]=$1; 
     biggestfilesizefilenameindir[directoryname]=substr($0,index($0," ")+1); 
    } 
    } 
    END { 
    for (directoryname in biggestfilesizefilenameindir) { 
     print biggestfilesizefilenameindir[directoryname]; 
    } 
    }' 

これは名前が特殊な文字が含まれている場合でも安全である:'"\nなど

+0

ありがとう...それは素晴らしい仕事です – JohnnyOh

関連する問題