如何將文件複製到硬盤上的許多隨機位置?我在想像將文件複製到隨機目錄?
find ~ -type d -exec cp dat_boi.jpg {} \;
但是,這將複製到每個目錄,我只是想像磁盤上任何地方~100隨機的。
如何將文件複製到硬盤上的許多隨機位置?我在想像將文件複製到隨機目錄?
find ~ -type d -exec cp dat_boi.jpg {} \;
但是,這將複製到每個目錄,我只是想像磁盤上任何地方~100隨機的。
單線程與bash
shuf
實用程序可以做到這一點。
/bin/cp -v dat_boi.jpg `find . -type d | shuf -n1`
這會將dat_boi.jpg
每個所指示shuf
與參數作爲與-v
詳細標誌是可選看到正被複制的目標文件夾和和/bin/cp
被稱爲返回一個隨機路徑-n1
,/bin/cp
時間到新文件夾通過原生cp
這將避免拋出一個討厭的錯誤說文件存在,而不是文件覆蓋。
查看正在對隨機文件夾執行的副本。
$ find . -type d
.
./foo
./bar
./woo
$ /bin/cp -v dat_boi.jpg `find . -type d | shuf -n1`
`dat_boi.jpg' -> `./woo/dat_boi.jpg'
$ /bin/cp -v dat_boi.jpg `find . -type d | shuf -n1`
`dat_boi.jpg' -> `./bar/dat_boi.jpg'
$ /bin/cp -v dat_boi.jpg `find . -type d | shuf -n1`
`dat_boi.jpg' -> `./bar/dat_boi.jpg'
$ /bin/cp -v dat_boi.jpg `find . -type d | shuf -n1`
`dat_boi.jpg' -> `./woo/dat_boi.jpg'
$ /bin/cp -v dat_boi.jpg `find . -type d | shuf -n1`
`dat_boi.jpg' -> `./woo/dat_boi.jpg'
爲了滿足您的使用情況,如果你能在一個循環中運行的命令說,100次,你可以觀察shuf
工作的randomity。
像這樣的事情會做,但未必是超級強大的:
find . -type d | sort -R | head -n 5 | xargs -I {} cp myfile "{}"
在純英文:找到當前目錄下的目錄,隨機排序,選擇在這個隨機列表頂部的五,並複製myfile給他們。
$ ls
A C E G I K M N P R T V X Z
B D F H J L myfile O Q S U W Y
$ find . -type d | sort -R | head -n 5 | xargs -I {} cp myfile "{}"
$ tree
.
├── A
├── B
├── C
├── D
├── E
├── F
├── G
├── H
├── I
│ └── myfile
├── J
├── K
├── L
│ └── myfile
├── M
│ └── myfile
├── myfile
├── N
├── O
├── P
├── Q
├── R
│ └── myfile
├── S
├── T
├── U
├── V
│ └── myfile
├── W
├── X
├── Y
└── Z
tree
只允許顯示結果。
這些目錄必須存在嗎?如果您沒有寫入權限會發生什麼? – 2016-05-23 12:50:53
噢,他們必須是已經存在的目錄。如果寫權限是一個問題,我只是假定腳本會失敗,特別是那個,並繼續前進。 – jdt
首先,執行'find'獲取可能的目錄列表並將列表保存到_lst.txt._然後,從_lst.txt_中隨機選擇N個項目,並將文件複製到這些目錄中。 – boardrider