Computer >> 컴퓨터 >  >> 프로그래밍 >> Bash 프로그래밍

유닉스 ls 명령어 완벽 가이드: 효율적인 파일 관리를 위한 15가지 실전 예제

유닉스 ls 명령어 완벽 가이드: 효율적인 파일 관리를 위한 15가지 실전 예제ls — 유닉스 사용자와 시스템 관리자라면 이 두 글자짜리 명령어 없이는 하루도 보낼 수 없습니다. 하루에 10번을 쓰든 100번을 쓰든, ls 명령어의 강력한 기능을 제대로 알면 커맨드 라인 작업이 한층 즐거워집니다.

이 글에서는 강력한 ls 명령어의 실전 예제 15가지를 살펴보겠습니다.

1. ls -t로 가장 최근에 편집한 파일 열기

현재 디렉토리에서 마지막으로 편집한 파일을 열려면 ls, head, vi 명령어를 아래와 같이 조합하면 됩니다.

ls -t는 파일을 수정 시간 기준으로 정렬하여 가장 최근에 편집한 파일을 맨 앞에 표시하고, head -1은 그 첫 번째 파일을 가져옵니다.

$ vi first-long-file.txt
$ vi second-long-file.txt
$ vi `ls -t | head -1`
[참고: 마지막에 편집한 파일(즉, second-long-file.txt)이 열립니다]

2. ls -1로 한 줄에 하나씩 표시하기

파일 목록을 한 줄에 하나씩 표시하려면 -1 옵션을 사용합니다.

$ ls -1
bin
boot
cdrom
dev
etc
home
initrd
initrd.img
lib

3. ls -l로 파일/디렉토리 상세 정보 확인하기

파일과 디렉토리의 자세한 정보(long listing)를 확인할 때 사용합니다.

$ ls -l
-rw-r----- 1 ramesh team-dev 9275204 Jun 13 15:27 mthesaur.txt.gz
  • 첫 번째 문자 – 파일 타입: 첫 문자는 파일의 종류를 나타냅니다. 위 예제에서 첫 문자가 하이픈(-)이면 일반 파일을 의미합니다. ls -l 출력에서 첫 문자에 올 수 있는 값은 다음과 같습니다.
    • - : 일반 파일
    • d : 디렉토리
    • s : 소켓 파일
    • l : 링크 파일
  • 필드 1 – 파일 권한: 이후 9개 문자는 파일 권한을 나타냅니다. 각 3문자씩 사용자(user), 그룹(group), 기타(other)의 읽기·쓰기·실행 권한을 의미합니다. 위 예제의 -rw-r-----는 사용자에게 읽기·쓰기, 그룹에게 읽기, 나머지에게는 아무 권한도 없음을 뜻합니다.
  • 필드 2 – 링크 수: 해당 파일의 링크 개수입니다. 예제에서는 1이므로 링크가 하나뿐입니다.
  • 필드 3 – 소유자: 파일 소유자입니다. 예제에서는 사용자 'ramesh'가 소유하고 있습니다.
  • 필드 4 – 그룹: 파일이 속한 그룹입니다. 예제에서는 'team-dev' 그룹에 속해 있습니다.
  • 필드 5 – 크기: 파일 크기입니다. 예제에서 '9275204'가 파일 크기(바이트)입니다.
  • 필드 6 – 마지막 수정 날짜 및 시간: 파일이 마지막으로 수정된 날짜와 시간입니다. 예제에서 'Jun 13 15:27'이 마지막 수정 시각입니다.
  • 필드 7 – 파일 이름: 마지막 필드는 파일 이름입니다. 예제에서는 mthesaur.txt.gz입니다.

4. ls -lh로 사람이 읽기 쉬운 단위로 크기 표시하기

ls -lh(h는 human readable의 약자)를 사용하면 파일 크기를 읽기 쉬운 형태로 표시합니다. M은 MB, K는 KB, G는 GB를 의미합니다.

$ ls -l
-rw-r----- 1 ramesh team-dev 9275204 Jun 12 15:27 arch-linux.txt.gz*
$ ls -lh
-rw-r----- 1 ramesh team-dev 8.9M Jun 12 15:27 arch-linux.txt.gz

5. ls -ld로 디렉토리 자체 정보 표시하기

'ls -l'을 실행하면 디렉토리 내부 내용의 상세 정보가 출력됩니다. 하지만 디렉토리 자체의 정보를 보고 싶다면 -d 옵션을 사용하세요. 예를 들어 ls -l /etc는 etc 디렉토리 아래의 모든 파일을 보여주지만, /etc/ 디렉토리 자체의 정보를 보려면 다음처럼 -ld 옵션을 사용합니다.

$ ls -l /etc
total 3344
-rw-r--r-- 1 root root 15276 Oct 5 2004 a2ps.cfg
-rw-r--r-- 1 root root 2562 Oct 5 2004 a2ps-site.cfg
drwxr-xr-x 4 root root 4096 Feb 2 2007 acpi
-rw-r--r-- 1 root root 48 Feb 8 2008 adjtime
drwxr-xr-x 4 root root 4096 Feb 2 2007 alchemist
$ ls -ld /etc
drwxr-xr-x 21 root root 4096 Jun 15 07:02 /etc

6. ls -lt로 수정 시간순 정렬하기

파일 이름을 마지막 수정 시간 순서대로 정렬하려면 -t 옵션을 사용합니다. -l 옵션과 함께 쓰면 특히 유용합니다.

$ ls -lt
total 76
drwxrwxrwt 14 root root 4096 Jun 22 07:36 tmp
drwxr-xr-x 121 root root 4096 Jun 22 07:05 etc
drwxr-xr-x 13 root root 13780 Jun 22 07:04 dev
drwxr-xr-x 13 root root 4096 Jun 20 23:12 root
drwxr-xr-x 12 root root 4096 Jun 18 08:31 home
drwxr-xr-x 2 root root 4096 May 17 21:21 sbin
lrwxrwxrwx 1 root root 11 May 17 20:29 cdrom -> media/cdrom
drwx------ 2 root root 16384 May 17 20:29 lost+found
drwxr-xr-x 15 root root 4096 Jul 2 2008 var

7. ls -ltr로 수정 시간 역순 정렬하기

파일을 마지막 수정 시간의 역순으로 정렬합니다. 이렇게 하면 가장 최근에 편집한 파일이 목록 맨 아래에 표시되어, 목록이 여러 페이지에 걸쳐질 때 매우 편리합니다. 저(ls 명령어를 다룬 원저자)는 항상 ls 대신 ls -ltr을 기본으로 사용하는데, 정말 편리하기 때문입니다.

$ ls -ltr
total 76
drwxr-xr-x 15 root root 4096 Jul 2 2008 var
drwx------ 2 root root 16384 May 17 20:29 lost+found
lrwxrwxrwx 1 root root 11 May 17 20:29 cdrom -> media/cdrom
drwxr-xr-x 2 root root 4096 May 17 21:21 sbin
drwxr-xr-x 12 root root 4096 Jun 18 08:31 home
drwxr-xr-x 13 root root 4096 Jun 20 23:12 root
drwxr-xr-x 13 root root 13780 Jun 22 07:04 dev
drwxr-xr-x 121 root root 4096 Jun 22 07:05 etc
drwxrwxrwt 14 root root 4096 Jun 22 07:36 tmp

8. ls -a 또는 ls -A로 숨김 파일 표시하기

디렉토리의 모든 숨김 파일을 보려면 '-a' 옵션을 사용합니다. 유닉스에서 숨김 파일은 파일 이름이 '.'으로 시작합니다.

$ ls -a
[rnatarajan@asp-dev ~]$ ls -a
. Debian-Info.txt
.. CentOS-Info.txt
.bash_history Fedora-Info.txt
.bash_logout .lftp
.bash_profile libiconv-1.11.tar.tar
.bashrc libssh2-0.12-1.2.el4.rf.i386.rpm

이 옵션은 '.'(현재 디렉토리)과 '..'(상위 디렉토리)까지 모두 표시합니다. 숨김 파일만 보고 싶고 '.'과 '..'은 제외하려면 -A 옵션을 사용하세요.

$ ls -A
Debian-Info.txt Fedora-Info.txt
CentOS-Info.txt Red-Hat-Info.txt
.bash_history SUSE-Info.txt
.bash_logout .lftp
.bash_profile libiconv-1.11.tar.tar
.bashrc libssh2-0.12-1.2.el4.rf.i386.rpm
[참고: . 과 .. 는 표시되지 않습니다]

9. ls -R로 하위 디렉토리까지 재귀적으로 표시하기

$ ls /etc/sysconfig/networking
devices profiles
$ ls -R /etc/sysconfig/networking
/etc/sysconfig/networking:
devices profiles
/etc/sysconfig/networking/devices:
/etc/sysconfig/networking/profiles:
default
/etc/sysconfig/networking/profiles/default:

모든 파일을 재귀적으로 표시하려면 -R 옵션을 사용합니다. 루트(/)에서 실행하면 전체 파일 시스템의 숨김 파일을 제외한 모든 파일이 재귀적으로 출력됩니다.

10. ls -i로 파일의 inode 번호 확인하기

내부 관리 작업 중 파일의 inode 번호가 필요할 때가 있습니다. 아래와 같이 -i 옵션을 사용하면 inode 번호를 표시할 수 있습니다. inode 번호를 이용하면 find 명령어 활용 예제 #6에서 설명했듯이, 파일 이름에 특수 문자가 포함된 파일도 삭제할 수 있습니다.

$ ls -i /etc/xinetd.d/
279694 chargen 279724 cups-lpd 279697 daytime-udp
279695 chargen-udp 279696 daytime 279698 echo

11. ls -q로 제어 문자 숨기기

그래픽으로 표현할 수 없는 비출력(non-graphic) 제어 문자를 물음표(?)로 대체하여 출력하려면 -q 옵션을 사용합니다.

ls -q

12. ls -n으로 UID와 GID 표시하기

-l과 동일한 형식으로 출력하지만, 사용자·그룹 이름 대신 숫자 형태의 UID와 GID를 보여줍니다.

$ ls -l ~/.bash_profile
-rw-r--r-- 1 ramesh ramesh 909 Feb 8 11:48 /home/ramesh/.bash_profile
$ ls -n ~/.bash_profile
-rw-r--r-- 1 511 511 909 Feb 8 11:48 /home/ramesh/.bash_profile
[참고: uid가 511, gid가 511로 표시됩니다]

13. ls -F로 특수 문자를 이용한 시각적 파일 분류하기

'ls -l'을 실행한 뒤 첫 문자를 일일이 확인해 파일 종류를 파악하는 대신, -F 옵션을 사용하면 파일 종류별로 서로 다른 특수 문자가 붙어 한눈에 구분됩니다.

$ ls -F
Desktop/ Documents/ Ubuntu-App@ firstfile Music/ Public/ Templates/

위 출력에서 각 기호의 의미는 다음과 같습니다.

  • / – 디렉토리
  • 기호 없음 – 일반 파일
  • @ – 링크 파일
  • * – 실행 파일

14. 색상을 이용한 시각적 파일 분류하기

파일이 표시되는 색상으로 종류를 구분하는 것도 또 하나의 분류 방법입니다. 위 출력에서 디렉토리는 파란색, 심볼릭 링크는 초록색, 일반 파일은 기본 색상으로 표시됩니다.

$ ls --color=auto
Desktop Documents Examples firstfile Music Pictures Public Templates Videos

15. 유용하게 쓸 수 있는 ls 명령어 별칭(Alias)

위에서 소개한 필요한 옵션들을 조합해 별칭(alias)으로 만들어두면 편리합니다. 다음 설정을 추천합니다.

  • 사람이 읽기 쉬운 크기 형식으로 파일을 상세히 나열:
    alias ll="ls -lh"
  • 특수 문자를 붙여 파일 종류를 시각적으로 구분:
    alias lv="ls -F"
  • 색상과 특수 문자를 함께 사용해 파일 종류를 구분:
    alias ls="ls -F --color=auto"

함께 읽으면 좋은 리눅스 관련 글

아래의 '15가지 예제' 시리즈 글들도 도움이 될 것입니다.

  • Grep 완전 정복! – grep 명령어 실전 예제 15가지
  • Linux Crontab: cron 잡 실전 예제 15가지
  • 엄마, 찾았어요! – Linux find 명령어 실전 예제 15가지
  • 리눅스 커맨드 라인 히스토리 마스터하기 – 15가지 예제