Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++로 리눅스에서 수정 및 생성된 파일을 시간순으로 나열하는 방법


이 글에서는 C++ 프로그램을 사용해 리눅스 환경에서 파일을 수정 시간 기준으로 정렬하여 나열하는 방법을 살펴봅니다. 가장 최근에 수정된 파일부터 가장 오래된 파일까지, 또는 그 반대 순서로도 손쉽게 확인할 수 있습니다.

방법은 매우 간단합니다. 리눅스 셸 명령어를 활용하면 원하는 순서대로 파일 목록을 얻을 수 있습니다. ls -l 명령어는 모든 파일을 상세 정보와 함께 출력하며, 여기에 정렬 옵션을 추가하면 됩니다. -t 옵션은 파일을 수정 시간 기준으로 정렬하고, -r 옵션을 함께 사용하면 정렬 순서가 역순으로 바뀝니다.

정리하면 다음 두 가지 명령어를 사용합니다:

ls -lt   # 수정 시간 기준 내림차순 (최신 파일이 맨 위)
ls -ltr  # 수정 시간 기준 오름차순 (오래된 파일이 맨 위)

C++ 코드에서는 system() 함수를 호출해 이러한 셸 명령어를 실행함으로써 결과를 화면에 출력할 수 있습니다.

예제 코드

#include<iostream>
using namespace std;

int main(){
    // 현재 디렉터리의 파일을 수정 시간 내림차순으로 표시
    cout << "Files List (First one is newest)" << endl;
    system("ls -lt"); // 리눅스 명령어로 파일 목록을 시간순 정렬하여 출력

    cout << "\n\nFiles List (First one is oldest)" << endl;
    system("ls -ltr"); // 앞선 명령어에 -r 옵션을 추가해 역순으로 출력
}

실행 결과

Files List (First one is newest)
total 32
-rwxr-xr-x 1 soumyadeep soumyadeep 8984 May 11 15:19 a.out
-rw-r--r-- 1 soumyadeep soumyadeep 424 May 11 15:19 linux_mod_list.cpp
-rw-r--r-- 1 soumyadeep soumyadeep 1481 May 4 17:03 test.cpp
-rw-r--r-- 1 soumyadeep soumyadeep 710 May 4 16:51 caught_interrupt.cpp
-rw-r--r-- 1 soumyadeep soumyadeep 557 May 4 16:34 trim.cpp
-rw-r--r-- 1 soumyadeep soumyadeep 1204 May 4 16:24 1325.test.cpp

Files List (First one is oldest)
total 32
-rw-r--r-- 1 soumyadeep soumyadeep 1204 May 4 16:24 1325.test.cpp
-rw-r--r-- 1 soumyadeep soumyadeep 557 May 4 16:34 trim.cpp
-rw-r--r-- 1 soumyadeep soumyadeep 710 May 4 16:51 caught_interrupt.cpp
-rw-r--r-- 1 soumyadeep soumyadeep 1481 May 4 17:03 test.cpp
-rw-r--r-- 1 soumyadeep soumyadeep 424 May 11 15:19 linux_mod_list.cpp
-rwxr-xr-x 1 soumyadeep soumyadeep 8984 May 11 15:19 a.out

결과 해석

ls -lt를 실행하면 가장 최근에 수정된 파일(위 예제에서는 a.out)이 목록 맨 위에 표시됩니다. 반대로 -r 옵션을 추가한 ls -ltr은 정렬 순서를 뒤집어 가장 오래된 파일이 맨 위에 오게 됩니다. 각 행에는 파일 권한, 소유자, 크기, 마지막 수정 시간, 파일 이름이 순서대로 표시되므로, 백업 관리나 로그 분석처럼 최근 변경 사항을 추적해야 하는 작업에 유용하게 활용할 수 있습니다.