0
我想將目錄中的最新文件複製到另一個目錄,以便我想複製的文件的總大小應該是10gb,比方說。列出總大小約爲特定值的最新文件
我知道,我可以列出像這樣一定大小的最近10個文件:
find . -maxdepth 1 -type f -size +100M -print0 | xargs -0 ls -Shal | head
但是,有沒有辦法找到最近的文件,文件的總大小約爲10GB?
謝謝
我想將目錄中的最新文件複製到另一個目錄,以便我想複製的文件的總大小應該是10gb,比方說。列出總大小約爲特定值的最新文件
我知道,我可以列出像這樣一定大小的最近10個文件:
find . -maxdepth 1 -type f -size +100M -print0 | xargs -0 ls -Shal | head
但是,有沒有辦法找到最近的文件,文件的總大小約爲10GB?
謝謝
是的,那是可能的。 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
。
但我的問題是找到最大數量的最近文件,這樣當我們總結它們的大小時,它小於10gb。它不是特定於文件的,假設我們在目錄中有1000個文件。最後10個文件總共有11GB,最後9個文件有9.8GB。我想要最後的9個文件。 –
只有nit纔會是'「$ some_directory」',以防用戶盲目嘗試,例如, '我的文檔'(或其他一些這樣的廢話......) –
@ DavidC.Rankin當然,你是對的,但我只是把它當作一個元變量。也許我應該說'$ foo'。 –