Как добавить метку времени процесса к имени файла в Unix
У меня есть каталог /home/user/ingest/
который имеет много файлов внутри него с различными размерами. Мне нужно переместить каждый файл в этой папке в /home/user/ingest/inbox
каждые две минуты. Может возникнуть ситуация, когда на перемещение первого файла может потребоваться более 2 минут. /home/user/ingest/inbox
, В этом случае, когда он перемещает второй файл, он НЕ ДОЛЖЕН также брать первый файл. Вот почему я подумал добавить метку времени к имени файлов во время перемещения. Есть ли способ сделать это в сценариях оболочки?
И я также понимаю, что использование h crontab может помочь мне планировать выполнение сценария оболочки каждые две минуты. У меня есть базовое представление о cron, но для моего конкретного требования, как я могу проверить, будет ли файл использоваться каждые две минуты или нет?
1 ответ
Вы можете сделать это с помощью этого скрипта bash:
#!/bin/bash
TIMESTAMP=$(date +%s)
for f in /home/user/ingest/*
do
if [ -f "$f" ]; then
name=$(basename "$f")
mv $f /home/user/ingest/inbox/${name}_${TIMESTAMP}
fi
done
${TIMESTAMP}
количество секунд с начала эпохи (январь 1970). Цикл for перебирает все в /home/user/ingest/
директории, и оператор if проверяет, является ли файл обычным файлом (не директорией, не символической ссылкой), а затем файл перемещается в /home/user/ingest/inbox/
с отметкой времени, добавленной в конец.