यहां हम देखेंगे कि Linux प्लेटफॉर्म पर C++ प्रोग्राम का उपयोग करके संशोधित फ़ाइलों और पुरानी व नई बनी फ़ाइलों को कैसे सूचीबद्ध किया जाए।
कार्य बहुत सरल है। हम वांछित क्रम में फ़ाइलें प्राप्त करने के लिए Linux शेल कमांड का उपयोग कर सकते हैं। ls -l कमांड का उपयोग लॉन्ग लिस्टिंग फॉर्मेट में सभी फ़ाइलें प्राप्त करने के लिए किया जाता है। यहां हम समय के आधार पर उन्हें सॉर्ट करने के लिए और विकल्प जोड़ेंगे (आरोही और अवरोही)। -t कमांड समय के आधार पर सॉर्ट करने के लिए उपयोग की जाती है, और क्रम को उलटने के लिए -r जोड़ा जा सकता है।
कमांड इस प्रकार होगी:
ls -lt # नवीनतम पहले (अवरोही समय) ls -ltr # सबसे पुरानी पहले (आरोही समय)
हम C++ में system() फ़ंक्शन का उपयोग करके इन कमांड्स का उपयोग करेंगे, ताकि C++ कोड से परिणाम प्राप्त किया जा सके।
उदाहरण कोड
#include <iostream>
#include <cstdlib>
using namespace std;
int main() {
// वर्तमान डायरेक्टरी में संग्रहीत फ़ाइलें उनके संशोधन समय के अवरोही क्रम में दिखाएं
cout << "फ़ाइल सूची (पहली सबसे नई है)" << endl;
system("ls -lt"); // Linux कमांड का उपयोग करके फ़ाइल सूची दिखाएं, समय के आधार पर सॉर्ट
cout << "\n\nफ़ाइल सूची (पहली सबसे पुरानी है)" << endl;
system("ls -ltr"); // पिछली कमांड -r उलटे क्रम के लिए उपयोग किया जाता है
return 0;
}
आउटपुट
फ़ाइल सूची (पहली सबसे नई है) total 32 -rwxr-xr-x 1 user user 8984 May 11 15:19 a.out -rw-r--r-- 1 user user 424 May 11 15:19 linux_mod_list.cpp -rw-r--r-- 1 user user 1481 May 4 17:03 test.cpp -rw-r--r-- 1 user user 710 May 4 16:51 caught_interrupt.cpp -rw-r--r-- 1 user user 557 May 4 16:34 trim.cpp -rw-r--r-- 1 user user 1204 May 4 16:24 1325.test.cpp फ़ाइल सूची (पहली सबसे पुरानी है) total 32 -rw-r--r-- 1 user user 1204 May 4 16:24 1325.test.cpp -rw-r--r-- 1 user user 557 May 4 16:34 trim.cpp -rw-r--r-- 1 user user 710 May 4 16:51 caught_interrupt.cpp -rw-r--r-- 1 user user 1481 May 4 17:03 test.cpp -rw-r--r-- 1 user user 424 May 11 15:19 linux_mod_list.cpp -rwxr-xr-x 1 user user 8984 May 11 15:19 a.out
बेहतर दृष्टिकोण: C++17 फाइलसिस्टम लाइब्रेरी
system() का उपयोग पोर्टेबल नहीं है और सुरक्षा जोखिम पैदा कर सकता है। C++17 में <filesystem> हेडर एक बेहतर, पोर्टेबल तरीका प्रदान करता है:
#include <iostream>
#include <filesystem>
#include <vector>
#include <algorithm>
#include <iomanip>
#include <ctime>
namespace fs = std::filesystem;
int main() {
vector<fs::directory_entry> files;
for (const auto& entry : fs::directory_iterator(".")) {
if (entry.is_regular_file())
files.push_back(entry);
}
// संशोधन समय के अनुसार सॉर्ट करें (नवीनतम पहले)
sort(files.begin(), files.end(),
[](const fs::directory_entry& a, const fs::directory_entry& b) {
return a.last_write_time() > b.last_write_time();
});
cout << "फ़ाइल सूची (नवीनतम पहले):\n";
for (const auto& f : files) {
auto t = fs::last_write_time(f);
auto sctp = chrono::time_point_cast(t - fs::file_time_type::clock::now() + chrono::system_clock::now());
time_t tt = chrono::system_clock::to_time_t(sctp);
cout << f.path().filename() << " " << ctime(&tt);
}
return 0;
}
लाभ
- प्लेटफॉर्म-स्वतंत्र (Windows/Linux/macOS पर काम करता है)।
- कोई शेल इंजेक्शन जोखिम नहीं।
- बेहतर त्रुटि प्रबंधन।
- फ़ाइल मेटाडेटा तक सीधी पहुंच।