2017-04-05 45 views
0

我想將目錄中的最新文件複製到另一個目錄,以便我想複製的文件的總大小應該是10gb,比方說。列出總大小約爲特定值的最新文件

我知道,我可以列出像這樣一定大小的最近10個文件:

find . -maxdepth 1 -type f -size +100M -print0 | xargs -0 ls -Shal | head 

但是,有沒有辦法找到最近的文件,文件的總大小約爲10GB?

謝謝

回答

1

是的,那是可能的。 find有一個printf動作,它允許你只輸出你感興趣的信息。就你而言,這將是一個時間戳(例如上次修改時間),文件大小和文件名。然後,您可以根據時間戳排序的輸出,並使用awk總結文件大小和輸出文件名上升到一定極限:

find "$some_directory" -printf "%[email protected] %s %p\n" | sort -nr \ 
    | awk '{ a = a + $2; if (a > 10000) { print a; exit; }; print $3; }' 

根據自己的需要調整的極限,如果你刪除print a對結果不感興趣。如果您想包含推動總和超過限制的文件,請將print a替換爲print $3

+0

但我的問題是找到最大數量的最近文件,這樣當我們總結它們的大小時,它小於10gb。它不是特定於文件的,假設我們在目錄中有1000個文件。最後10個文件總共有11GB,最後9個文件有9.8GB。我想要最後的9個文件。 –

+0

只有nit纔會是'「$ some_directory」',以防用戶盲目嘗試,例如, '我的文檔'(或其他一些這樣的廢話......) –

+0

@ DavidC.Rankin當然,你是對的,但我只是把它當作一個元變量。也許我應該說'$ foo'。 –

相關問題