gpt4 book ai didi

如果文件存在,Linux 移动文件而不替换

转载 作者:太空狗 更新时间:2023-10-29 11:25:48 26 4
gpt4 key购买 nike

在 Linux 中,如果特定文件已存在于目标中,我该如何移动文件而不替换?

我尝试了以下命令:

mv --backup=t <source> <dest>

文件没有被替换,但问题是扩展名被更改了,因为它在文件名的后面加上了“~”。

有没有其他方法可以保留扩展名,但在移动时只会更改文件名?

例如test~1.txt 而不是 test.txt~1

当扩展名被替换后,您将无法通过双击文件来查看它。

最佳答案

如果你想在 shell 中创建它,而不需要原子性(所以如果两个 shell 进程同时运行相同的代码,你可能会有麻烦),你可以(使用内置的 test(1) 功能你的外壳)

[ -f destfile.txt ] || mv srcfile.txt destfile.txt

如果你需要原子性(当两个进程同时运行时它起作用的东西),事情就相当困难了,你需要在 C 中调用一些系统调用。查看 renameat2(2)

也许您应该考虑使用一些版本控制系统,例如 git

关于如果文件存在,Linux 移动文件而不替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34987448/

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