Программа генерирует выходные текстовые файлы с именем output.txt
после каждой 15-й итерации определенного процесса. При этом он перезаписывает последний output.txt
. Однако я хочу сохранить файлы и не могу изменить имя файла в программе.
Можно ли запустить какой-нибудь сценарий вместе с программой, которая контролирует выходной каталог, перемещает и переименовывает файлы output.txt
в другой каталог?
Сначала установите пакет inotify-tools
:
sudo apt-get install inotify-tools
сценарий удара А помог бы
#! /bin/bash
folder=~/Desktop/abc
cdate=$(date +"%Y-%m-%d-%H:%M")
inotifywait -m -q -e create -r --format '%:e %w%f' $folder | while read file
do
mv ~/Desktop/abc/output.txt ~/Desktop/Old_abc/${cdate}-output.txt
done
, Что делает это средство сценария:
Это будет наблюдать папку ~/Desktop/abc
поэтому каждый раз, когда файл создал внутри затем, это собирается переместить файл, основанный внутри, который является именем output.txt
к каталогу ~/Desktop/Old_abc
, и переименуйте обеспечение суффикса даты и времени t он новый файл, это, чтобы убедиться не перезаписать старые файлы, и как этот можно также знать, что этот файл был создан в во сколько и дата
Установка пакет inoticoming
sudo apt-get install inoticoming
Создают сценарий watch_output
обертки:
#!/bin/bash
backup_folder="$HOME/backups"
filename="$1"
mkdir -p "$backup_folder"
if [ "$filename" == "output.txt" ]
then
echo "New or changed file \"output.txt\" in $2"
mv "$2/$filename" "$backup_folder/${filename%.*}.$(date +'%Y-%m-%d_%H:%M:%S').${filename##*.}"
fi
Делают его исполняемым файлом:
chmod +x <full_path_of_watch_output_script>
Часы Ваша папка произвела папку:
inoticoming "$HOME/output" <full_path_of_watch_output_script> {} "$HOME/output" \;
Пример:
$ killall inoticoming
$ inoticoming "$HOME/output" ./watch_output {} "$HOME/output" \;
$ touch $HOME/output/output.txt
$ ls -log $HOME/backups
total 0
-rw-rw-r-- 1 0 Mai 13 14:32 output.2015-05-13_14:32:10.txt
Сценарий ниже переместит и переименует любой файл, который мог бы появиться в определенном каталоге (dr1
). Это переименовывает файлы как: output_1.txt
, output_2.txt' и т.д. Сценарий смотрит "активно", если целенаправленное имя уже существует в каталоге 2 (не от "вслепую" выбранного диапазона), таким образом, можно запустить и остановить сценарий в любое время без риска перезаписи существующих файлов.
, Так как это дает выходным файлам уникальное имя и по определению не перезаписывает существующие файлы, целенаправленный каталог может совпасть с исходным каталогом.
rename_save.py
Выполнение это командой:
python3 /path/to/rename_save.py
, в то время как другой (итерация) сценарий работает
#!/usr/bin/env python3
import shutil
import os
import time
#--- set the time interval to check for new files (in seconds) below
# this interval should be smaller than the interval new files appear!
t = 1
#--- set the source directory (dr1) and target directory (dr2)
dr1 = "/path/to/source_directory"
dr2 = "/path/to/target_directory"
name = "output_"; extension = ".txt"
newname = lambda n: dr2+"/"+name+str(n)+extension
while True:
newfiles = os.listdir(dr1)
for file in newfiles:
source = dr1+"/"+file
n = 1; target = newname(n)
while os.path.exists(target):
n = n+1; target = newname(n)
shutil.move(source, target)
time.sleep(t)
/etc/systemd/system/multi-user.target.wants/nfs-server.service
. – Svetlana Belkin 8 September 2016 в 07:14