簡體   English   中英

如何在Unix中將進程的時間戳附加到文件名

[英]How to append the timestamp of a process to the name of a file in Unix

我有一個目錄/home/user/ingest/ ,里面有許多大小不一的文件。 我需要每兩分鍾將此文件夾中的每個文件移動到/home/user/ingest/inbox 可能存在第一個文件可能需要2分鍾以上才能移至/home/user/ingest/inbox 在這種情況下,當移動第二個文件時,它也不應獲取第一個文件。 這就是為什么我考慮在移動時將時間戳添加到文件名的原因。 無論如何,在shell腳本中可以做到這一點嗎?

而且我也了解使用crontab可能有助於我每兩分鍾安排一次shell腳本的執行。 我對cron有一個基本的了解,但是對於我的特定要求,如何每兩分鍾檢查一次該文件是否被愛過?

您可以使用以下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年1月)以來的秒數。 for循環遍歷/home/user/ingest/目錄中的所有內容,並且if語句檢查文件是否為常規文件 (不是目錄,不是符號鏈接),然后將文件移至/home/user/ingest/inbox/ ,並將時間戳記附加到末尾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM