Unix создать несколько файлов с одинаковым именем в каталоге - PullRequest
0 голосов
/ 10 июля 2020

Я ищу какой-то лог c в linux, где я могу разместить файлы с тем же именем в каталоге или файловой системе.

Например, я создаю файл abc.txt, поэтому в следующий раз, если какой-либо процесс создаст abc.txt, он должен автоматически проверить и создать файл с именем abc.txt.1, затем в следующий раз abc.txt.2 и так далее ...

Есть ли способ достичь этого.

Также приветствуются любые logi c или сторонние инструменты.

Ответы [ 3 ]

1 голос
/ 10 июля 2020

Вы спросите:

Например, я создаю файл ab c .txt, поэтому в следующий раз, если любой процесс создаст ab c .txt он должен автоматически проверять и создавать файл с именем ab c .txt.1 должен быть создан

(выделено мной) . Чтобы получить такой эффект автоматически, для каждого процесса, без явного обеспечения процессами, он должен быть реализован как функция файловой системы, содержащей файлы. Такие файловые системы называются версией файловыми системами , хотя обычно детали немного отличаются от того, что вы описываете. Но что наиболее важно, хотя такие файловые системы существуют для Linux, ни одна из них не является основной. Насколько мне известно, ни один из основных дистрибутивов Linux даже не предлагает такой вариант в качестве поддерживаемого дистрибутива.

Хотя он немного устарел, см. Также Linux управление версиями файлов?

Вы могли бы приблизить это для многих программ с помощью специальной версии стандартной библиотеки C, но это не надежно, и вы не должны ожидать, что это будет иметь универсальный эффект.

Было бы совсем другое дело, если бы отдельный процесс был закодирован для такого поведения. При открытии каждого нового файла необходимо будет проверять существующие файлы и выбирать подходящее имя. При этом необходимо проявлять осторожность, чтобы избежать связанных состояний гонки, но это можно сделать. Детали будут зависеть от языка, на котором вы пишете.

0 голосов
/ 17 июля 2020

Я не знаю вашего конкретного варианта использования, но вы можете попробовать посмотреть logrotate: https://wiki.archlinux.org/index.php/Logrotate

0 голосов
/ 10 июля 2020

Для этого можно использовать выражение BASH. Например, если бы я хотел создать 10 файлов с одинаковым именем, но с уникальным числовым значением, я бы сделал следующее:

# touch my_file{01..10}.txt

Это создаст 10 файлов, начиная с 01 и заканчивая 10. Этот метод также подходит для циклического перебора файлов в последовательности или если вы также создаете каталоги.

Теперь, если я читаю ваш вопрос, правильно вы спрашиваете, если вы переместите файл или создадите файл в каталоге. вы хотите, чтобы сценарий автоматически создавал для вас новый файл? Если это так, просто используйте тест, и, если есть файл, переместите этот файл и отметьте его. Лично я использую для этого временные метки.

Logi c:

# 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

Как видите, logi c очень прост. Надеюсь, это поможет.

Ура

...