Shell-Script
如何將隨機文件複製到目錄
首先,這不是家庭作業。我只是不想翻閱一堆手冊並從 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