最大のファイルの名前とサイズを印刷します。

最大のファイルの名前とサイズを印刷します。

ディレクトリ名でなければならないパラメータを使用するスクリプトを作成する必要があります。そこからすべてのファイルを印刷してから、最大のファイルとサイズを印刷する必要があります。助けてください!配列がls -l役に立ちますか?

yourfilenames=`ls $1`
for eachfile in $yourfilenames
do
   echo $eachfile
done

答え1

このduコマンドを使用すると、特定のファイルのサイズを取得できます。

すべてのファイルの出力を取得し、最大のファイルを印刷するには、次のコマンドを使用できます。

find /path/to/yourDirectory/ -type f -exec du  {} + | sort -rn | tee  >(echo -e "\nThe largest one is: $(head -1)")

このコマンドはfind /path/to/yourDirectory/ -type f -exec du {} +サイズを取得しますファイルのみ(サブディレクトリはサイズの印刷には考慮されず、そのファイルのみが考慮されます。)

出力はsort -nr最大ファイルから最小ファイルにソートされます。

出力はtee >(echo -e "\nThe largest one is: $(head -1)")processにリダイレクトされ、stdoutprocessにリダイレクトされるため、リダイレクトされたecho -e ...出力$(head -1)の最初の行だけが印刷され、これは最大ファイルサイズを表します。

これを使用して印刷すると、echo -e "\nThe largest one is: $(head -1)"出力は次のようになります。

The largest one is: 736K        ./path/to/yourdir/largestfilesize

上に示すように、寸法はパスの前に印刷されます。サイズの前にパスを取得するには、次のものを使用できます。

find /path/to/yourDirectory/ -type f -exec du  {} + | sort -rn | \
tee  >(echo -e "\nThe largest one is: $(head -1 | awk -v OFS='   ' '{print $2,$1}')")

ファイルサイズを知りたい場合人が読める形式(4M、5G、3Kなど)の場合、その形式で印刷するには正しいオプションを使用する必要があります。

find /path/to/yourDirectory/ -type f -exec du -h {} + | sort -rh | \
tee  >(echo -e "\nThe largest one is: $(head -1)")

#or

find /path/to/yourDirectory/ -type f -exec du -h  {} + | sort -rh \
tee  >(echo -e "\nThe largest one is: $(head -1 | awk -v OFS='   ' '{print $2,$1}')")

#du -h prints the file sizes in human readable format
#sort -h will sort the output comparing the human
#readable numbers (e.g., 4M,5G,3K, etc)

関連情報