Linux Unix在一个目录中创建多个同名文件

Linux Unix在一个目录中创建多个同名文件,linux,ubuntu,unix,linux-kernel,archlinux,Linux,Ubuntu,Unix,Linux Kernel,Archlinux,我正在寻找linux中的某种逻辑,我可以将同名文件放在目录或文件系统中 例如,我创建了一个文件abc.txt,因此下次如果任何进程创建abc.txt,它应该自动检查并创建名为abc.txt.1的文件,然后下次创建abc.txt.2等等 有没有办法做到这一点 也欢迎使用任何逻辑或第三方工具。您可以使用BASH表达式来实现这一点。例如,如果我想创建10个文件,所有文件都具有相同的名称,但具有唯一的数字值,我将执行以下操作: # touch my_file{01..10}.txt 这将创建10个文件

我正在寻找linux中的某种逻辑,我可以将同名文件放在目录或文件系统中

例如,我创建了一个文件
abc.txt
,因此下次如果任何进程创建
abc.txt
,它应该自动检查并创建名为
abc.txt.1
的文件,然后下次创建
abc.txt.2
等等

有没有办法做到这一点


也欢迎使用任何逻辑或第三方工具。

您可以使用BASH表达式来实现这一点。例如,如果我想创建10个文件,所有文件都具有相同的名称,但具有唯一的数字值,我将执行以下操作:

# touch my_file{01..10}.txt
这将创建10个文件,从01开始一直到10。这种方法也适用于按顺序在文件上循环,或者如果您也在创建目录

现在如果我读到你的问题,你会问,如果你移动一个文件或在一个目录中创建一个文件。您希望脚本自动为您创建新文件吗?如果是这种情况,那么只需使用测试,如果有文件,则移动该文件并标记它。就我个人而言,我用时间戳来做这件事

逻辑:

# The [ -f ] tests if the file is present
if [ -f $MY_FILE_NAME ]; then
    # If the file is present move the file and give it the PID
    # That way the name will always be unique
    mv $MY_FILE_NAME $MY_FILE_NAME_$$
    mv $MY_NEW_FILE .
else
    # Move or make the file here
    mv $MY_NEW_FILE .
fi
正如你所看到的,逻辑非常简单。希望这有帮助

干杯

你问

例如,我创建了一个文件abc.txt,因此下次如果任何过程 创建abc.txt,它应自动检查并将文件命名为 应创建为abc.txt.1

(重点补充)。为了自动获得这样的效果,对于每个进程,如果没有进程的明确规定,它必须作为包含文件的文件系统的一个特性来实现。这样的文件系统是被调用的,尽管其细节通常与您描述的略有不同。然而,最重要的是,尽管Linux有这样的文件系统,但它们都不是主流。据我所知,没有一个主要的Linux发行版提供一个作为发行版支持的选项

虽然有点过时,也请参见

通过定制版本的C标准库,您可能可以对许多程序进行近似计算,但这并不是万无一失的,您不应该期望它具有普遍的效果


对于一个单独的进程来说,为这种行为编码是完全不同的事情。它需要检查现有文件,并在打开每个新文件时选择适当的名称。在这样做时,需要注意避免相关的比赛条件,但这是可以做到的。详细信息取决于您所使用的语言。

我不知道您的特定用例,但您可以尝试查看logrotate:

请注意,
abc.txt
abc.txt.1
显然不是同一个名称。你真正想做的似乎足够清楚,但你用来向他人(尤其是自己)描述事情的词语很重要。这很快就会产生问题。指向文件的链接应该指向最新版本,还是指向创建文件时存在的版本?