Shell-Script

如何將隨機文件複製到目錄

  • November 13, 2017

首先,這不是家庭作業。我只是不想翻閱一堆手冊並從 AZ 學習編寫 shell 來做這件事。

我有一個/mnt/hdd/files包含很多子文件夾的文件夾,我在其中儲存文件,並且想隨機選擇和復製文件讓我們說/mnt/hdd/temp/1

有沒有辦法選擇和復製文件,直到文件夾/mnt/hdd/temp/1達到給定的大小?(如 5 或 10 GB)

平均文件大小約為 10 兆字節,因此只需告訴命令(腳本/批處理?)隨機選擇的文件數(1000)也會很酷。

沒有重複項,目錄樹中只有一種文件類型。

一種方法,假設文件名沒​​有嵌入換行符:

#! /bin/sh
dest=/mnt/hdd/temp/1
cd /mnt/hdd/files
find . -type f | \
   shuf -n 1000 | \
   while [ $(du -ks "$dest" | awk '{ print $1 }') -lt 10485760 ] && IFS= read -r fn; do
       cp "$fn" "$dest"
   done

只要目標大小小於 10 GB,這將複製隨機文件,但不超過 1000 個/mnt/hdd/files文件。/mnt/hdd/temp/1``du

引用自:https://unix.stackexchange.com/questions/404235