如何随机选择50个文件并将其复制到不同的文件夹/目录(MacOS)?
我试图从一个目录中随机选择50个文件(.nexus文件),并将它们复制到一个单独的目标目录中 我在一个问题页面上找到了以下脚本,涉及一个类似的主题,随机选择了8个项目: shuf-zn8-e*.jpg | xargs-0 cp-vt目标/ shuf在当前目录中洗牌*.jpg文件列表。 -z是以零结束每一行,以便正确处理具有特殊字符的文件。 -n8在8个文件之后退出shuf。 xargs-0读取由空字符分隔的输入(来自shuf-z)并运行cp。 -第五,逐字逐句地打印每一份。 -t是指定目标目录 在终端中输入此命令时,我发现-t对于MacOS来说不是有效的命令。然而,在删除它之后,我似乎仍然无法让脚本正常工作。输入以下脚本的输出为: 用法:cp[-R[-H |-L |-p][-fi |-n][-apvXc]源文件目标文件 cp[-R[-H |-L |-P][-fi |-n][-apvXc]源文件。。。目标目录 下面是我一直在使用的代码。我使用gshuf而不是shuf,长文件路径是要复制到的文件的目标目录 我是相当新的编码等,所以任何建议将不胜感激!谢谢如何随机选择50个文件并将其复制到不同的文件夹/目录(MacOS)?,macos,shell,terminal,bioinformatics,Macos,Shell,Terminal,Bioinformatics,我试图从一个目录中随机选择50个文件(.nexus文件),并将它们复制到一个单独的目标目录中 我在一个问题页面上找到了以下脚本,涉及一个类似的主题,随机选择了8个项目: shuf-zn8-e*.jpg | xargs-0 cp-vt目标/ shuf在当前目录中洗牌*.jpg文件列表。 -z是以零结束每一行,以便正确处理具有特殊字符的文件。 -n8在8个文件之后退出shuf。 xargs-0读取由空字符分隔的输入(来自shuf-z)并运行cp。 -第五,逐字逐句地打印每一份。 -t是指定目标目录
gshuf-zn50-e*.nexus | xargs-0 cp-v~/Users/brandon/Dropbox/Macbook/CH2_macross_-UCE_project/taxon set/all_outgroups3/macross_random_sampled_50_A您可以尝试另一个
xargs
参数:
shuf -zn8 -e *.jpg | xargs -0 -I{} cp -v {} target/
-I
允许您指定将被实际输入替换的字符串,以便xargs
等效于:
cp -v <file1> <file2> ... <fileN> target/
正如你所说的,你对这一点相当陌生,也许可以坚持一些简单的东西
cp $(ls | sort -R | head -50) targetdir/
cp
copiesls
列出当前目录(请注意,它仅在输出到屏幕时生成列)sort
对它从ls
获取的列表进行排序,但是-R
告诉它进行随机排序head
从sort
-50
中的随机列表中取顶部,告诉您有多少个
$()
返回执行参数的结果
当然,|
会在命令之间从左(输出)到右(输入)传递文本
cp $(ls | sort -R | head -50) targetdir/