簡體   English   中英

根據bash中的文件大小打印文件的有序列表

[英]Print an ordered list of files based on files size in bash

我編寫了以下腳本,以根據“查找”命令查找文件,然后打印出結果:

#!/bin/bash
loc_to_look='./'

file_list=$(find $loc_to_look -type f -name "*.txt" -size +5M)

total_size=`du -ch $file_list | tail -1 | cut -f 1`

echo 'total size of all files is: '$total_size

for file in $file_list; do
    size_of_file=`du -h $file | cut -f 1`
    echo $file" "$size_of_file
done

...給我的輸出像:

>>> ./file_01.txt 12.0M
>>> ./file_04.txt 24.0M
>>> ./file_06.txt 6.0M
>>> ./file_02.txt 6.2M
>>> ./file_07.txt 84.0M
>>> ./file_09.txt 55.0M
>>> ./file_10.txt 96.0M

不過,我首先要做的是在打印出來之前按文件大小對列表進行排序。 這樣做的最佳方法是什么?

如果您以字節為單位獲取文件大小,則很容易做到,只需管道即可sort

find $loc_to_look -type f -name "*.txt" -size +5M -printf "%f %s\n" | sort -n -k 2

如果要以MB為單位打印文件大小,則可以最終通過管道傳輸到awk:

find $loc_to_look -type f -printf "%f %s\n" | sort -n -k 2 | awk '{ printf "%s %.1fM\n", $1, $2/1024/1024}'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM