如何随机 select 50 个文件并将它们复制到不同的 folder/directory (MacOS)?
How to randomly select 50 files and copy them to different folder/directory (MacOS)?
我正在尝试从目录中随机 select 50 个文件(.nexus 文件)并将它们复制到单独的目标目录中。
我在一个问题页面上发现了以下脚本,其中有 8 个项目是随机 select 的类似主题:
shuf -zn8 -e *.jpg | xargs -0 cp -vt 目标/
shuf 随机排列当前目录中的 *.jpg 文件列表。
-z 是将每一行以零结束,以便正确处理具有特殊字符的文件。
-n8 在 8 个文件后退出 shuf。
xargs -0 读取由空字符分隔的输入(来自 shuf -z)并运行 cp。
-v 是详细打印每个副本。
-t 是指定目标目录。
在终端中输入时,我发现 -t 不是 MacOS 的有效命令。但是,删除它之后,我似乎仍然无法让脚本运行。输入以下脚本的输出是:
用法:cp [-R [-H | -L | -P]] [-fi | -n] [-apvXc] source_file target_file
cp [-R [-H | -L | -P]] [-fi | -n] [-apvXc] source_file ... target_directory
我一直在使用的代码如下。我使用 gshuf 而不是 shuf,长文件路径是我要将文件复制到的目标目录。
我对编码等还很陌生,所以如有任何建议,我们将不胜感激!谢谢!
gshuf -zn50 -e *.nexus | xargs -0 cp -v ~/Users/brandon/Dropbox/Macbook/CH2_macrops_UCE_project/taxon-sets/all_outgroups3/macrops_randomly_sampled_50_A
你可以试试xargs
的另一个参数:
shuf -zn8 -e *.jpg | xargs -0 -I{} cp -v {} target/
-I
允许您指定将替换为实际输入的字符串,因此 xargs
等同于:
cp -v <file1> <file2> ... <fileN> target/
在您的具体情况下:
gshuf -zn50 -e *.nexus | xargs -0 -I{} cp -v {} ~/Users/brandon/Dropbox/Macbook/CH2_macrops_UCE_project/taxon-sets/all_outgroups3/macrops_randomly_sampled_50_A
正如您所说,您对此还很陌生,也许坚持一些简单的事情
cp $(ls | sort -R | head -50) targetdir/
cp
份
ls
列出您当前的目录(注意它只在输出到屏幕时生成列)
sort
对从 ls
获得的列表进行排序,但 -R
告诉它随机排序
head
从 sort
中取随机列表的顶部 -50
告诉有多少
$()
returns 括号中内容的执行结果
当然还有 |
从左(输出)到右(输入)命令之间的管道文本
我正在尝试从目录中随机 select 50 个文件(.nexus 文件)并将它们复制到单独的目标目录中。
我在一个问题页面上发现了以下脚本,其中有 8 个项目是随机 select 的类似主题:
shuf -zn8 -e *.jpg | xargs -0 cp -vt 目标/
shuf 随机排列当前目录中的 *.jpg 文件列表。 -z 是将每一行以零结束,以便正确处理具有特殊字符的文件。 -n8 在 8 个文件后退出 shuf。 xargs -0 读取由空字符分隔的输入(来自 shuf -z)并运行 cp。 -v 是详细打印每个副本。 -t 是指定目标目录。
在终端中输入时,我发现 -t 不是 MacOS 的有效命令。但是,删除它之后,我似乎仍然无法让脚本运行。输入以下脚本的输出是:
用法:cp [-R [-H | -L | -P]] [-fi | -n] [-apvXc] source_file target_file cp [-R [-H | -L | -P]] [-fi | -n] [-apvXc] source_file ... target_directory
我一直在使用的代码如下。我使用 gshuf 而不是 shuf,长文件路径是我要将文件复制到的目标目录。
我对编码等还很陌生,所以如有任何建议,我们将不胜感激!谢谢!
gshuf -zn50 -e *.nexus | xargs -0 cp -v ~/Users/brandon/Dropbox/Macbook/CH2_macrops_UCE_project/taxon-sets/all_outgroups3/macrops_randomly_sampled_50_A
你可以试试xargs
的另一个参数:
shuf -zn8 -e *.jpg | xargs -0 -I{} cp -v {} target/
-I
允许您指定将替换为实际输入的字符串,因此 xargs
等同于:
cp -v <file1> <file2> ... <fileN> target/
在您的具体情况下:
gshuf -zn50 -e *.nexus | xargs -0 -I{} cp -v {} ~/Users/brandon/Dropbox/Macbook/CH2_macrops_UCE_project/taxon-sets/all_outgroups3/macrops_randomly_sampled_50_A
正如您所说,您对此还很陌生,也许坚持一些简单的事情
cp $(ls | sort -R | head -50) targetdir/
cp
份
ls
列出您当前的目录(注意它只在输出到屏幕时生成列)
sort
对从 ls
获得的列表进行排序,但 -R
告诉它随机排序
head
从 sort
中取随机列表的顶部 -50
告诉有多少
$()
returns 括号中内容的执行结果
当然还有 |
从左(输出)到右(输入)命令之间的管道文本