Linux
從給定目錄中隨機選擇一定比例的文件
給定目錄下大約有 10000 個文件。是否有任何命令可以幫助我從中隨機挑選 1000 個文件並將它們放入另一個目錄。選擇的文件應該從原始目錄中刪除。
如果你有
shuf
,它會很容易地讓你做你想做的事,只要文件名中沒有換行符,並且沒有子目錄:mapfile -t sample < <(shuf -n 1000 -e given_directory/*) mv "${sample[@]}" other_directory
如果有子目錄,您可以通過使用
find
而不是 glob 來獲取文件列表。或者你可以過採樣和過濾。find
還將幫助您處理名稱中可能包含換行符的文件(這確實是一個壞主意,但這並不一定意味著您可以忽略這種可能性),因為您可以使用與標誌-print0
結合的操作來. 例如,-z``shuf
find given_directory -type f -print0 | shuf -z -n 1000 | xargs -0 mv -t other_directory
mv -t
是一個(非常有用的)Gnu 擴展,它可以讓你在命令行的開頭提供目標目錄,它與xargs
/find -exec
模型在命令行末尾放置多個參數很好地配合。