gpt4 book ai didi

linux - 在 Linux 中将以 'a' 'c' 或 'e' 开头的前 N ​​个文件从一个文件夹复制到另一个文件夹

转载 作者:太空宇宙 更新时间:2023-11-04 12:15:46 24 4
gpt4 key购买 nike

我在指定目录中有很多文件。例如,我想将其中的 6 个复制到一个位置。我想到了这个:

find . -type f |head -6| xargs cp /specified_dir/[ace]* -t /target_loc

问题是每个以 'a' 'c' 'e' 开头的文件都会被复制。应该有前 6 个文件,但我收到 8 个(4 个带有“a”,3 个带有“c”,1 个带有“e”)。我在想,是否有办法解决这个问题。

最佳答案

使用您的命令,您只能从 find 获得前 6 个结果(这不是以 [ace] 开头的文件)但您最终执行的是此命令:

cp /specified_dir/[ace]* -t /target_loc <file_argument>

复制所有的[ace]*文件加上 <file_argument>通过 xargs 提供到目标位置。然后你执行这个命令 6 次。


你想要的是首先找到 [ace]*文件,获取其中的前 6 个(就像你对 head 所做的那样)并写入最后一个没有要复制的文件的命令,这个参数将从 xargs 提供。 .

find . -type f -name "[ace]*" | head -6 | xargs cp -t /target_loc

现在这是错误的或者至少是不安全的,因为不会处理例如带有空格的文件名。所以你可以使用这个语法:

find . -type f -name "[ace]*" | head -6 | xargs -I{} cp {} -t /target_loc

-I设置替换字符串,以便稍后存在时,它表示引用参数的位置。

关于linux - 在 Linux 中将以 'a' 'c' 或 'e' 开头的前 N ​​个文件从一个文件夹复制到另一个文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47491686/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com