किस क्रम में दिनांकित द्वारा आदेश दिए गए हैं? निश्चित रूप से अल्फ़ान्यूमेरिक आदेश नहीं।
ls -lt
संशोधन के समय के अनुसार। लेकिन मुझे सृजन का समय चाहिए।
किस क्रम में दिनांकित द्वारा आदेश दिए गए हैं? निश्चित रूप से अल्फ़ान्यूमेरिक आदेश नहीं।
ls -lt
संशोधन के समय के अनुसार। लेकिन मुझे सृजन का समय चाहिए।
जवाबों:
अधिकांश यूनियनों में फ़ाइल निर्माण समय की अवधारणा नहीं है। ls
जानकारी दर्ज न होने के कारण आप इसे प्रिंट नहीं कर सकते । यदि आपको निर्माण समय की आवश्यकता है, तो संस्करण नियंत्रण प्रणाली का उपयोग करें : निर्माण समय को चेक-इन समय के रूप में परिभाषित करें।
यदि आपके यूनिक्स संस्करण का निर्माण समय है, तो इसके प्रलेखन को देखें। उदाहरण के लिए, मैक ओएस एक्स पर (केवल एक उदाहरण जो मुझे ¹ का पता है), उपयोग करें ls -tU
। विंडोज एक निर्माण समय भी संग्रहीत करता है, लेकिन यह हमेशा यूनिक्स उपयोगिताओं के बंदरगाहों के संपर्क में नहीं होता है, उदाहरण के लिए साइगविन के ls
पास इसे दिखाने का विकल्प नहीं है। stat
उपयोगिता, निर्माण के समय, "जन्म समय" जीएनयू उपयोगिताओं में कहा जाता दिखाएं जिससे Cygwin के तहत आप के साथ जन्म समय के अनुसार क्रमबद्ध फ़ाइलों को दिखा सकते हैं कर सकते हैं stat -c '%W %n' * | sort -k1n
।
ध्यान दें कि ctime ( ls -lc
) फ़ाइल निर्माण समय नहीं है , यह inode परिवर्तन का समय है। जब भी फ़ाइल में बदलाव (सामग्री या मेटाडेटा) के बारे में कुछ भी नहीं लिखा जाता है, तब इनकोड परिवर्तन का समय अपडेट किया जाता है, सिवाय इसके कि जब फ़ाइल को केवल पढ़ा जाता है तब भी अपडेट नहीं किया जाता है (भले ही एटीम अपडेट किया गया हो)। विशेष रूप से, माइम हमेशा की तुलना में हाल ही में अधिक है (फ़ाइल सामग्री संशोधन समय) जब तक कि माइम को भविष्य में स्पष्ट रूप से किसी तिथि पर सेट नहीं किया गया हो।
-U
निर्माण समय के अनुसार। Solaris 10.x के तहत: निर्माण के समय का /usr/bin/ls
समर्थन -U
, /usr/ucb/ls
समर्थन -U
और क्रमबद्ध नहीं करता है। ये परिणाम स्पष्ट रूप से पहली बार उस जानकारी को संग्रहीत करने वाले फाइल सिस्टम पर निर्भर करते हैं।
दुर्भाग्य से, stat(2)
एपीआई फ़ाइल निर्माण समय प्राप्त करने का एक तरीका प्रदान नहीं करता है, क्योंकि यह यूनिक्स मानकों द्वारा आवश्यक नहीं है ।
हालाँकि, कुछ फ़ाइल सिस्टम, ext4
फ़ाइल मेटाडेटा के भीतर इस जानकारी को सहेजते हैं। इसे प्राप्त करने का कोई मानक तरीका नहीं है, लेकिन एक तरीका है ( ext
केवल फाइलसिस्टम):
debugfs -R 'stat partition/relative/path/to/file' /dev/sda1
यदि आप उपयोग करते हैं तो आपको ऐसा कुछ उल्लेख करना होगा crtime
( नहीं ctime
!) ext4
।
ctime: 0x513a50e5:d4e448f0 -- Fri Mar 8 21:58:13 2013
atime: 0x513dd8f1:04df0b20 -- Mon Mar 11 14:15:29 2013
mtime: 0x513a50e5:d4e448f0 -- Fri Mar 8 21:58:13 2013
crtime: 0x513a259a:35191a3c -- Fri Mar 8 18:53:30 2013
इस आदेश को वापस आने में कुछ समय लग सकता है, शायद इसलिए यह फ़ाइल से संबंधित हर सीमा को भी सूचीबद्ध करता है।
अब अगर आप करना चाहते आदेश निर्माण तिथि से फाइलें, मुझे लगता है कि यह आसानी से (और न ही ठीक से) संभव नहीं है। जैसा कि गिल्स कहते हैं, यह शायद आसान होगा यदि आप एक संशोधन नियंत्रण प्रणाली का उपयोग करेंगे। लेकिन आप ext4
एपीआई पर एक नजर डालने की कोशिश कर सकते हैं ...
मैंने सफलता के बिना (हाल ही में) उबंटू प्रणाली stat -c '%w' myfile
पर एक ext4
फाइलसिथम पर कमांड की कोशिश की (यह सिर्फ जवाब देता है -
)।
f='/path/to/file'; debugfs -R "stat $f" $(df $f|(read a; read a b; echo "$a"))|grep crtime
यहाँ एक पर्ल स्क्रिप्ट है जो आप क्या चाहते हैं (यदि आपका फाइल सिस्टम ext4 है) प्राप्त करने के लिए टॉटर के उत्तर का उपयोग करता है।
मेरे होम मशीन (उबंटू) और मेरे सर्वर (सेंटोस) पर काम करता है, लेकिन इससे परे परीक्षण नहीं किया गया है, इसलिए यमव।
#!/usr/bin/env perl
use Modern::Perl '2009';
use DateTime;
# Open the current directory for reading
opendir my $dh, "." or die "Unable to open directory: $!";
# Create a hash to save results into
my %results;
my %datestamp;
# Loop through the directory getting creation date stats for each file
while ( my $filename = readdir $dh ) {
# Skip non-files
next if $filename eq '.' or $filename eq '..';
# Save the ls output for this file/directory
$results{ $filename } = `ls -ld $filename`;
my $stats = `debugfs -R 'stat $filename' /dev/sda6 2>/dev/null`;
# crtime: 0x51cd731c:926999ec -- Fri Jun 28 12:27:24 2013
$stats =~ m/crtime\: \w+\:\w+ -- (.+?)\n/s;
my $datestring = $1;
# Dissect date with a regexp, ick
my %months = (
'Jan' => '1',
'Feb' => '2',
'Mar' => '3',
'Apr' => '4',
'May' => '5',
'Jun' => '6',
'Jul' => '7',
'Aug' => '8',
'Sep' => '9',
'Oct' => '10',
'Nov' => '11',
'Dec' => '12',
);
$datestring =~ m/\w+ (\w+) ?(\d+) (\d\d)\:(\d\d)\:(\d\d) (\d\d\d\d)/;
# Convert date into a more useful format
my $dt = DateTime->new(
year => $6,
month => $months{$1},
day => $2,
hour => $3,
minute => $4,
second => $5,
);
# Save the datestamp for this result
$datestamp{ $filename } = $dt->iso8601;
}
# Output in date order
my @filenames = sort { $datestamp{$a} gt $datestamp{$b} } keys %datestamp;
foreach my $filename ( @filenames ) {
print $results{ $filename };
}
ls -lct
निर्माण तिथि के अनुसार फ़ाइलों को सॉर्ट करने के लिए इस कमांड का उपयोग करें ।
ctime
परिवर्तन समय है, और समय नहीं बना।