이 글에서는 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은 정렬 순서를 뒤집어 가장 오래된 파일이 맨 위에 오게 됩니다. 각 행에는 파일 권한, 소유자, 크기, 마지막 수정 시간, 파일 이름이 순서대로 표시되므로, 백업 관리나 로그 분석처럼 최근 변경 사항을 추적해야 하는 작업에 유용하게 활용할 수 있습니다.