Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何随机选择50个文件并将其复制到不同的文件夹/目录(MacOS)?_Macos_Shell_Terminal_Bioinformatics - Fatal编程技术网

如何随机选择50个文件并将其复制到不同的文件夹/目录(MacOS)?

如何随机选择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是指定目标目录

我试图从一个目录中随机选择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,长文件路径是要复制到的文件的目标目录

我是相当新的编码等,所以任何建议将不胜感激!谢谢


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
copies
ls
列出当前目录(请注意,它仅在输出到屏幕时生成列)
sort
对它从
ls
获取的列表进行排序,但是
-R
告诉它进行随机排序
head
sort
-50
中的随机列表中取顶部,告诉您有多少个

$()
返回执行参数的结果

当然,
|
会在命令之间从左(输出)到右(输入)传递文本

cp $(ls | sort -R | head -50) targetdir/