產生文件列表並將其截斷為 2 個列表,每個列表包含 X Mb 文件

產生文件列表並將其截斷為 2 個列表,每個列表包含 X Mb 文件

我需要產生某個目錄中所有文件的列表,並將其截斷為 X 個列表,每個列表包含固定數量的文件資料。

例如,我有 95 GB 的數據。

  • 產生文件列表 ( total.txt)
  • 分為total.txt3 個列表:
    1. slice1.txt包含第一個 35 GB 檔案的列表
    2. slice2.txt包含以下 35 GB 檔案的列表
    3. slice3.txt包含剩餘文件的列表

有什麼提示嗎?我用谷歌搜尋並嘗試過 find、awk、grep,但這個任務似乎確實超出了我的能力範圍。

答案1

您可以嘗試使用分裂命令來分隔文件:

split total.txt -b 4444160

上面的內容將分割total.txt成 35 GB 的檔案。

答案2

while read filename; do cat $filename; done < total.txt | split -b 35G - slice

這將建立您可以重新命名的“sliceaa”、“sliceab”、“sliceac”。

與其他實施split,你可能要說-b 35000m

如果你有bash,你可以寫

cat $(< total.txt) | split -b 35G - slice

假設沒有數百或數千個檔案名稱。

創造total.txt

files=(*)
printf "%s\n" "${files[@]}" > total.txt

相關內容