Как добавить метку времени процесса к имени файла в 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/ с отметкой времени, добавленной в конец.

Другие вопросы по тегам