gpt4 book ai didi

linux - 如何使用 find 在 CSH 中复制带前缀的文件?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:23:24 29 4
gpt4 key购买 nike

我正在尝试制作某些文件的副本并让它们有一个前缀。为此,我想到了使用 find。为了我们的使用,我们称它们为 kuku 文件,我希望它们有一个“foo”前缀:

find . -maxdepth 1 -name "kuku*" -exec cp '{}' foo_'{}' \;

但它不起作用,因为查找总是以 ./开始结果,所以我收到很多错误消息说“cp:无法创建常规文件 `foo_./kuku ...`:没有这样的文件或目录".

这个问题可以通过使用 foreach f (`ls`) 而不是使用 grep 和 status var 来解决,但它很麻烦,我想学习更好的解决方案(并在此过程中提高我对 find 命令的了解。 ..).

更新 foreach 解决方案(我不喜欢并希望您帮助寻找替代方案):

foreach f (`ls`)
echo $f | grep -lq kuku
if (! $status) then
cp $f foo_$f
endif
end

但这很丑陋! (更新结束)

正如标题所说,我正在使用 csh - 不是因为我喜欢它,只是因为那是我们在工作中使用的...

更新尝试使用 basename 作为解决方案,因为 find -exec basename '{}'\; 删除了 ./前缀,但我在查找中使用带反引号的 basename 失败(`),意思是

find -name "kuku*" -exec cp '{}' foo_`basename '{}` \;

根本行不通。

最佳答案

给你..我已经在我的 linux 机器上测试过了

find . -name "kuku*" -exec sh -c 'cp {} foo_`basename {}`' \;

关于linux - 如何使用 find 在 CSH 中复制带前缀的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17522106/

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