Bash Sort를 사용한 파일 정렬 – 마스터처럼 파일 정렬하기

파일을 정리하고 조작하는 방법을 찾고 계신가요? 프로그래밍에서 파일 목록과 같은 데이터를 정렬해야 하는 경우가 많습니다. Bash sortls 명령을 사용하여 파일을 정렬하면 정리가 잘 됩니다.

이 튜토리얼에서 파일과 파일 내용의 정렬 기본 사항을 배워보겠습니다.

정렬을 시작해 보죠!

필수 사항

이 튜토리얼은 Ubuntu 20.04를 사용하지만 다른 Linux 배포판도 작동합니다.

알파벳 순으로 Bash 파일 정렬하기

Linux에서 파일을 정렬하는 방법은 많지만 가장 일반적인 방법으로 알파벳 순으로 파일을 정렬해 보겠습니다.

터미널을 열고 아래의 ls -l 명령을 실행하여 디렉터리의 파일 목록을 오름차순으로 가져옵니다. -l 플래그는 ls 명령이 반환된 출력을 긴 목록 형식으로 인쇄하도록 지시합니다.

ls -l
Bash Sort to Sort Files Alphabetically

기본적으로 ls 명령은 파일을 오름차순으로 나열합니다. 정렬 순서를 반대로하려면 -r 플래그를 ls -l 명령에 전달하면 됩니다. 다음과 같이: ls -lr. ls -l 명령에 -r 플래그를 전달하면 이 튜토리얼의 다른 예에도 적용됩니다.

파일 크기로 파일을 정렬하는 Bash Sort 사용

파일을 알파벳순으로 정렬하는 대신 파일 크기별로 정렬할 수 있습니다. 파일 크기별로 파일 목록을 정렬하는 것은 목록에서 가장 작은 파일 또는 가장 큰 파일을 우선적으로 볼 때 유용합니다.

파일을 크기별로 정렬하려면 -S 플래그를 사용하여 ls 명령에 파일 크기별로 파일 목록을 정렬하도록 지시합니다.

아래 명령을 실행하여 파일을 파일 크기별로 오랜 목록 형식 (-lS)으로 정렬합니다.

ls -lS

아래에서는 명령이 파일을 크기별로 내림차순으로 정렬한 것을 볼 수 있습니다(가장 큰 크기부터 가장 작은 크기까지).

정렬 순서를 반대로(가장 작은 크기부터 가장 큰 크기까지) 변경하려면 -r 플래그를 추가하면 됩니다. 예: ls -lSr

Sorting Files by Size

배시 정렬을 통한 수정 시간 기준으로 파일 정렬

파일을 크기별로 정렬하는 것 이상의 경우, 파일을 수정된 시간별로 정렬해야 하는 경우가 발생할 수 있습니다. 예를 들어, 만든 파일의 이름을 잊고 마지막으로 수정한 시간만 기억할 때입니다.

아래 명령을 실행하면 -t 매개변수가 ls 명령에 파일을 수정 시간별로 정렬하도록 지시합니다.

ls -lt
Sorting Files in a Directory by Modification Time

파일 확장자별로 파일 정렬

특정 파일 유형의 파일을 찾고자 할 때, 파일을 파일 확장자별로 정렬하는 것이 이상적인 해결책입니다.

아래 명령을 실행하여 작업 디렉토리의 파일을 목록 (ls)하고 확장자(-lx)별로 정렬합니다.

ls -lX

아래에서는 명령이 동일한 확장자를 가진 파일을 이름을 기준으로 오름차순으로 정렬한 것을 볼 수 있습니다.

Sorting Files by File Extension

텍스트 파일 내용 정렬

지금까지 디렉토리 내 파일을 정렬하는 다양한 방법을 배웠습니다. ls 명령어에 집중하는 대신, sort 명령어를 실행해 보세요. sort 명령어는 추가할 플래그에 따라 파일 내용을 정렬합니다. 하지만 먼저 수정할 파일이 필요합니다.

아래 명령어를 실행하여 과일 이름이 포함된 텍스트 파일인 ~/data/fruits.txt를 생성하세요. -e 플래그를 사용하여 백슬래시를 해석하여 각 단어를 새로운 줄에 작성합니다(\n).

echo -e "apple \nmango \nwatermelon \ncherry \norange \nbanana" > fruits.txt

이제 아래 명령어를 실행하여 fruits.txt의 각 단어를 sort하세요.

sort fruits.txt

아래에서 파일 내용이 오름차순으로 정렬된 것을 볼 수 있습니다.

Sorting File’s Content Alphabetically in Ascending Order

플래그 없이 sort 명령어는 기본적으로 파일 내용을 오름차순으로 정렬합니다. 정렬 순서를 반대로 하려면 -r 플래그를 sort 명령어에 추가하세요. 예: sort -r fruits.txt. -r 플래그를 추가하여 역순으로 정렬하는 것은 이 튜토리얼의 다른 예제에도 적용됩니다.

텍스트 파일의 숫자 목록 정렬

숫자를 정렬하는 명령어는 파일 내의 텍스트를 정렬하는 것과 유사하지만, 대신 -n 플래그를 추가해야 합니다. 어떻게 파일의 내용을 숫자로 정렬하는지 보여주기 위해 먼저 파일을 생성해 보겠습니다.

아래 명령어를 실행하여 각 줄에 임의의 숫자가 포함된 ~/data/scores.txt라는 파일을 생성하세요.

echo -e "45 \n69 \n52 \n21 \n3 \n5 \n78" > scores.txt

이제 아래 명령어를 실행하여 -n을 사용하여 ~/data/scores.txt 파일의 숫자를 sort하세요.

sort -n scores.txt

아래에서 숫자를 볼 수 있습니다. 가장 작은 숫자에서 가장 큰 숫자까지 나열된 줄에서.

Sorting Numbers in a File

텍스트 파일에서 버전 번호 목록을 정렬하기

아마도 정렬하려는 텍스트 파일에 버전 번호 목록이 있을 것입니다. 그렇다면 --version-sort 옵션을 추가하는 것이 해결책입니다.

--version-sort 옵션이 작동하는 방법을 보여주기 위해 먼저 텍스트 파일을 만들어보세요.

아래 명령을 실행하여 랜덤 버전 번호가 각각 새 줄에 나열된 ~/data/versions.txt라는 텍스트 파일을 만듭니다 (\n).

echo -e "1.0.0.1 \n 6.2.1.0 \n4.0.0.2" > versions.txt

이제 아래 명령을 실행하여 versions.txt 파일에서 버전 번호를 --version-sort하여 정렬합니다. --field-separator 옵션은 각 버전의 숫자가 점(.)으로 구분된 것임을 sort 명령에 알려줍니다. 텍스트 파일에 나열된 버전의 숫자를 구분하는 문자를 원하는 문자로 변경할 수 있습니다.

sort --version-sort --field-separator=. versions.txt
Sorting Version Numbers from a Text File

파일 확장자를 통해 파일 찾기 및 정렬하기

이전 예제에서는 단일 명령(ls 또는 sort)을 실행했습니다. 그러나 프로그래밍에서는 종종 두 개 이상의 명령을 함께 사용해야 할 수 있습니다. 어떻게? 한 명령을 다음 명령으로 파이프라이닝하는 것입니다.

find . -iname "*.md" | sort -r
Finding and Listing Files in Alphabetically Descending Order

아래 명령을 실행하여 작업 디렉토리(.)에서 모든 마크다운 파일(-iname "*.md")을 알파벳 역순으로 정렬하세요(sort -r). "*.md"를 다른 파일 확장자로 변경하여 다른 파일을 찾고 정렬하는 것도 시도해보세요.

Source:
https://adamtheautomator.com/bash-sort/