如何将文件复制到硬盘上的许多随机位置?我在想像将文件复制到随机目录?
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