ディレクトリ名でなければならないパラメータを使用するスクリプトを作成する必要があります。そこからすべてのファイルを印刷してから、最大のファイルとサイズを印刷する必要があります。助けてください!配列が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にリダイレクトされ、stdout
processにリダイレクトされるため、リダイレクトされた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)