सिम्लिंक के टाइमस्टैम्प को बदलना


31

मुझे पता है कि एक नियमित फ़ाइल के टाइमस्टैम्प को कैसे बदलना है:

touch -t 201301291810 myfile.txt

मैं सिम्बल के साथ ऐसा नहीं कर पा रहा था। क्या यह संभव है?

डिस्ट्रो: आरएचईएल 5.8


2
आप जिस समस्या को हल करने की कोशिश कर रहे हैं, वह क्या है?
mdpc

2
लेकिन क्यों .... आप किस वैश्विक समस्या से निपटने की कोशिश कर रहे हैं? क्या यह सिर्फ खगोलशास्त्र है, या इसका वास्तविक उद्देश्य है?
mdpc

7
यह अप्रासंगिक है। मैं अपने व्यावसायिक तर्क में नहीं जा रहा हूँ
उभयलिंगी

5
इस प्रकार की जानकारी से हम सभी को एक समाधान प्राप्त करने में मदद मिलती है जो आपके लिए काम करेगा। यह अप्रासंगिक नहीं है। क्षमा करें आप इतने संवेदनशील हैं, मैं बस मदद करने की कोशिश कर रहा हूं।
mdpc

4
यार, यह अप्रासंगिक है। बस दिए गए स्थिरांक के रूप में टाइमस्टैम्प को बदलने की आवश्यकता के साथ जाएं, अपरिवर्तनीय। आप यह सब आप चाहते हैं पर सवाल कर सकते हैं, लेकिन यह मेरे अंत में नहीं बदल रहा है। जो पूछताछ को बहुत अधिक बेकार कर देता है, प्रभावी रूप से। शुभकामनाएँ
उभयचर

जवाबों:


45

स्विच-एच जोड़ें

touch -h -t 201301291810 myfile.txt

Mandatory arguments to long options are mandatory for short options too.
  -a                     change only the access time
  -c, --no-create        do not create any files
  -d, --date=STRING      parse STRING and use it instead of current time
  -f                     (ignored)
  -h, --no-dereference   affect each symbolic link instead of any referenced
                         file (useful only on systems that can change the
                         timestamps of a symlink)
  -m                     change only the modification time
  -r, --reference=FILE   use this file's times instead of current time
  -t STAMP               use [[CC]YY]MMDDhhmm[.ss] instead of current time

> टच -h -t 201301291810 mysymlink -> स्पर्श: अमान्य विकल्प - h अधिक जानकारी के लिए `स्पर्श --help 'आज़माएं।
उभयलिंगी

2
"सिर्फ़ एक सिम्लिंक के टाइमस्टैम्प को बदल सकते हैं जो सिस्टम पर उपयोगी" उद्धरण को देखें।
mdpc

3
यह केवल हाल ही में जोड़ा गया था (यह 2010 से इस पेज में नहीं है )। हो सकता है कि उसे सिर्फ कोरूटिल्स का नवीनतम संस्करण प्राप्त करने की आवश्यकता हो। 2009 में जब इसे जोड़ा गया था, तब इसका अंतर यहां है
रैंडम 832

यदि यह सही उत्तर है, तो कृपया इसे इस तरह चिह्नित करें।
कोडेनिंजा

@qodeninja छह साल से अधिक समय के बाद, मैं वास्तव में एक या दूसरे तरीके से इसे चिह्नित करने के लिए ओपी से उम्मीद नहीं करता हूं।
Stephan

3

आपको हाल ही के संस्करण की आवश्यकता हो सकती है touch। यदि यह एक विकल्प नहीं है, और यदि आप C जानते हैं, तो आप इसे एक छोटा प्रोग्राम लिख सकते हैं, इसे स्वयं lutimes फ़ंक्शन का उपयोग करके कर सकते हैं


0

एक क्रूर बल तरीका इस प्रकार है:

 0. delete the old symlink you wish to change     
 1. change the system date to whatever date you want the symlink to be
 2. remake the symlink
 3. return the system date to current.

मुझे जिज्ञासु बना दिया, इसके लिए किस व्यवस्था की आवश्यकता है? btw, किसी भी फ़ाइल को बनाया है, जबकि आप अभी तक sytem तारीख तय नहीं किया है कि टाइमस्टैम्प भी होगा
कुंभ राशि

क्योंकि कोई एक बार बनाए गए सिमलिंक इनोड को संशोधित करने में असमर्थ है।
mdpc

0

lutimesफ़ंक्शन का उपयोग करके एक प्रतीकात्मक लिंक के एटिएम और माइम को बदला जा सकता है। निम्न प्रोग्राम मेरे लिए MacOSX और Linux पर एक मनमानी फ़ाइल से प्रतीकात्मक लिंक पर दोनों बार कॉपी करने के लिए काम करता है:

#include <errno.h>
#include <stdio.h>
#include <string.h>
#include <sys/stat.h>
#include <sys/time.h>

int
main(int argc, char **argv)
{
    struct timeval times[2];
    struct stat info;
    int rc;

    if (argc != 3) {
        fprintf(stderr, "usage: %s source target\n", argv[0]);
        return 1;
    }
    rc = lstat(argv[1], &info);
    if (rc != 0) {
        fprintf(stderr, "error: cannot stat %s, %s\n", argv[1],
                strerror(errno));
        return 1;
    }

    times[0].tv_sec = info.st_atime;
    times[0].tv_usec = 0;
    times[1].tv_sec = info.st_mtime;
    times[1].tv_usec = 0;
    rc = lutimes(argv[2], times);
    if (rc != 0) {
        fprintf(stderr, "error: cannot set times on %s, %s\n", argv[2],
                strerror(errno));
        return 1;
    }

    return 0;
}

यदि आप संकलित फ़ाइल को कॉल करते हैं copytime, तो कमांड copytime file linkका उपयोग लिंक बनाने के लिए किया जा सकता है जिसमें समान एनीमे और माइम fileहोता है। किसी अन्य फ़ाइल से समय की प्रतिलिपि बनाने के बजाय कमांड लाइन पर निर्दिष्ट समय का उपयोग करने के लिए कार्यक्रम को संशोधित करना बहुत मुश्किल नहीं होना चाहिए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.