IT/리눅스마스터1급

파일관리 명령어

알콩달콩아빠 2022. 5. 11. 12:54
728x90
반응형

안녕하세요

 

뚱보 프로그래머 입니다.

 

파일관리 명령어에 대해서 간단하게 적어봅니다.

 

 

find

원하는 특정 파일을 디렉토리를 탐색하여 찾는다. find는 매우 강력한 도구로 특정 디렉토리들을 순회하면서 지정된 조건에 만족하는 파일을 찾는다. 파일의 조건은 이름이나 크기, 날짜 등 다양하게 지정할 수 있다.

 

1] 형식

#find [ 경로(디렉토리) ] 탐색 조건

 

2] 옵션

1) 검색 조건

-name 파일명 : 찾고자 하는 파일의 이름을 정한다. 와일드 카드도 가능하다.

-user 사용자 : 파일 사용자의 ID에 따라서 검색한다. 로그인 이름이나 번호 모두가 가능하다.

-type letter : f, d, l, c, b 등을 문자로 사용하며 f는 파일, d는 디렉토리, l은 심볼릭 링크 파일, c는 캐릭터 디바이스 파일, b는 블록 디바이스 파일로 지정된 형식의 파일을 검색한다.

-mtime [+/-] n : n일 이후(+), n일 이전(-)을 조건으로 하여 검색한다.

-size [+/-]n[c/K] : n 사이즈의 파일을 검색, +이면 n사이즈 이상이고, -이면 n사이즈 이하가 된다.

-inum number : 지정한 inode 번호의 파일을 검색한다.

 

 2) 작업 명령

-print  : 검색한 파일을 stdout(디스플레이 화면)으로 출력한다.

-exec command {} \; : 검색한 파일에 대해 지정한 명령을 실행한다.

-ok command {} \; : 지정한 명령을 실행하기 전 확인하는 프롬프트가 나타난다.

 

3) 설명

계층적인 디렉토리 트리 구조로 인해 특정 파일이 어느 위치에 있는지 기억하기는 쉽지 않다. find 명령은 다양한 검색 조건을 이용하여 디렉토리 내에 위치한 파일들을 찾아낼 수 있다.

find 명령을 큰 규모의 디렉토리에서 사용할 경우는 많은 시간이 걸리므로 백그라운드 작업으로 수행하는 것이 편리하다.

 

3] 사용 예

[root @edu00 /root]#find  /bin  -name ro*

[root @edu00 /root]#find . –print

[root @edu00 /root]#find /etc –type d –print

 

 

 

 

파일 검색

 [root @edu00 /root]#find /home –name .bash_profile –exec more {} \;

[root @edu00 /root]#find /etc –type f –mtime –7 –ok ls –l {} \;

[root @edu00 /root]#find / -name core –exec rm –rf {} \;

[root @edu00 /root]#find / -user linux –exec ls –al {} \;

[root @edu00 /root]#find / -name “*.jpg” –print > /tmp/jpglist 2>/dev/null &

 

locate

일반적으로 리눅스 시스템에서는 디렉토리 구조 및 파일들을 database로 관리를 한다.  database를 검색하여 원하는 파일을 찾는 명링이 locate 명령이다. 그리고 이 명령을 보안을 염두에 두고 보강한 명령이 slocate이다.

#locate filesystem | less

filesystem이라는 단어가 들어있는 파일 혹은 디렉토리의 목록을 보여준다.

Database는 일반적으로 /var/lib/slocate/slocate.db 파일로 관리가 된다. 새롭게 추가된 프로그램의

경우 locate 명령으로 검색을 할 수 없다. 이는 slocate.db 파일이 갱신이 되지 않았기 때문이며, updatedb 명령을 이용하여 database를 갱신한 후 검색이 가능하다. 일반적으로 updatedb 명령은 cron에 등록이 되어있어서 매일 한번씩 database를 갱신하도록 되어있다. /etc/cron.daily/slocate.cron 에 설정이 되어 있다. 그리고 updatadb 명령어의 설정 파일은 /etc/updatadb.conf 파일이다.

 

which whereis

which 명령어는 PATH 변수에서 설정되어 있는 디렉토리를 검색하여 which 다음에 오는 명령어의 full path를 화면에 출력한다.

whereis 명령어는 나열되는 명령과 관계있는 파일들의 디렉토리들을 자세하게 화명에 출력한다.

#which man

/usr/bin/man

#whereis man

man :    /usr/bin/man    /etc/man.config    /usr/local/man    /usr/share/man  /usr/share/man/man1/man.1.gz      /usr/share/man/man7/man7.gz

 

파일 해석

file

파일의 유형을 알아보는 명령이다. 먼저 파일의 유형 및 파일의 내용을 살핀 다음 그 결과를 알려준다. /usr/share/magic 파일에는 file 명령에 의해 취급되는 파일의 내용에 대해 유형을 결정할 수 있는 설정이 되어있다.

 

1] 형식

#file 파일명

파일이 텍스트 문서인지 실행할 수 있는 파일인지 아니면 데이터 파일인지 등을 인식한다. 에디터를 사용해서 보거나 수정될 수 있는 파일인가 알아 보는 데에 많이 사용된다.

 

2] 사용 예

[root @edu00 /root]#file *

[root @edu00 /root]#file test.txt

 

3] 참조

[root @edu00 /root]#stat test.txt

 

 od

ASCII 텍스트가 아닌 파일의 경우는 od 명령을 통해 8진수 혹은 다른 포맷으로 파일의 내용을 확인할 수 있다.

 

1] 형식

#od [옵션] file

 

2] 옵션

-d : 10진수로 보여준다.

-o : 8진수로 보여준다.

-x : 16진수로 보여준다.

-c : ASCII 문자와 backslash escapes(\n)으로 보여준다.

 

strings

파일 내에서 ASCII 문자로 표현 가능한 부분을 표시한다.

#strings [옵션] file

 

파일관리

ls

ls list의 의미를 가지며 파일 시스템 상의 파일들의 목록을 보여준다.

 

1] 형식

#ls [ -옵션 ][ 파일명() ]

 

2]옵션

-a : dot(.)로 시작되는 이름을 가진 파일명도 전부 보여준다.

-c : 시간순으로 정렬해서 보여준다.

-d : 각 디렉토리에 존재하는 하위 디렉토리만을 보여준다.

-F : 파일과 디렉토리를 심볼로 구분하여 특성을 쉽게 알 수 있는 문자로 나타낸다.

+는 실행 가능한 파일을, /는 디렉토리 이름을 의미하고, @는 심볼릭 링크를 나타내고, =는 소켓(socket)을 나타낸다.

-f : 디스크에 저장된 순서대로 보여주되 정렬은 하지 않는다.

-i : 파일의 inode 번호(색인 번호)를 함께 보여준다.

-k : kb 단위로 보여준다.

-l : 각 파일들에 대한 소유자, 권한, 갱신일 등의 자세한 정보를 출력한다.

-m : 파일 이름을 가로로 나열해서 보여준다.

-R : 현 디렉토리의 내용은 물론이고 sub 디렉토리의 내용까지 전부 보여준다.

-r : 파일을 내림차순으로 보여준다.

-s : 파일이 얼마나 많은 디스크 블록을 차지하고 있는가를 보여준다.

-t : 시간순으로 정렬해서 파일을 보여준다.

--color : 파일의 형태에 따라 색깔을 다르게 보여준다.

 

3]숨김 파일 및 숨김 디렉토리

(.)으로 시작하는 파일과 디렉토리는 ls 명령만으로는 볼 수 없으며 –a 옵션을 함께 사용해야 한다.

숨김 파일은 주로 다른 사용자들이 함부로 수정을 못하게 하거나 거의 변경이 되지 않는 환경 파일과 같은 파일에 설정한다. 예를 들어 netscape 웹브라우저를 사용하게 되면 사용자의 홈 디렉토리에 .netscape 라는 디렉토리가 생성되고 사용자의 브라우저 설정과 관련한 파일들이 위치하게 된다.

 

4]사용 예

[root @edu00 /root]#ls

[root @edu00 /root]#ls –l

파일의 유형, 허가권, 링크 카운트, 파일 소유권, 바이트 크기, 마지막으로 수정한 날짜와 시간, 파일명 등을 보여준다.

[root @edu00 /root]#ls –alF /etc

 

cd

cd change directory의 의미이며 현재 작업하는 디렉토리를 변경한다.

 

1] 형식

#cd [ 디렉토리 ]

cd 명령과 디렉토리 이름 사이에 반드시 공백이 있어야 한다. 디렉토리 이름을 주지 않고 수행하면 사용자의 홈 디렉토리로 이동한다. 자신이 이동하고자 하는 디렉토리는 자신에게 실행 권한(execution permission)이 있어야 한다.

 

2] 사용 예

[root @edu00 linux]#cd /home 

[root @edu00 /home]#pwd 

/home

[root @edu00 /home]#cd ~

[root @edu00 /root]#pwd

/root

[root @edu00 /root]#cd

[root @edu00 /root]#pwd

/root

[root @edu00 /root]#cd ..

[root @edu00 /root]#cd /etc

[root @edu00 /etc]#cd -

[root @edu00 /root]#pwd

/root

[root @edu00 /root]#_

 

pwd

print work directory의 의미이며, 현재 작업하는 디렉토리를 보여준다.

 

1] 사용 예

[root @edu00 linux]#pwd

/home/linux

 

cat

이것은 파일의 내용을 화면에 출력하는 데 사용되기도 하며 파일을 다른 곳에 순차적인 스트림으로 보내기 위해 사용된다. 즉 크기가 작은 파일을 생성할 수 있다.

 

1] 형식

[root @edu00 /root]#cat [ 파일명 ]

 

2] 옵션

-n : 빈줄을 포함하여 모든 라인앞에 행번호를 추가하여 화면에 출력한다.

 

3] 사용 예

[root @edu00 /root]#cat 파일명

[root @edu00 /root]#cat /etc/passwd

[root @edu00 /root]#cat /etc/passwd | less

[root @edu00 /root]#cat > foo

I am a linuxer.

^D

[root @edu00 /root]#cat foo

 

mkdir

make directory의 의미이며 디렉토리를 새로 만든다.

 

1] 형식

# mkdir directory

 

2] 옵션

-p : 디렉토리의 경로명까지 생성

-m : 퍼미션 모드를 설정하면서 디렉토리 생성

 

3] 사용 예

[root @edu00 linux]#mkdir blade      //현재 디렉토리의 하위 디렉토리 작성

[root @edu00 linux]#cd blade 

[root @edu00 linux]#mkdir –p /home/edu01/edu02/edu03

 

rm

remove의 의미이며 파일이나 디렉토리를 지우는 명령이다.

 

1] 형식

# rm [ -옵션 ] 파일명

 

2] 옵션

-f : 보통 지울 수 있는 권한이 없으면 안되지만, 이 옵션을 사용하면 강제로 파일을 지울 수 있다.

-i : 파일을 지울 것인가 다시 물어본다. 지우기를 원한다면 y를 누른다.

-r : 서브 디렉토리의 파일도 모두 재귀적으로 지운다.

-v : 파일을 지우기 전에 파일의 이름을 나타내준다.

 

3] 사용 예

[root @edu00 linux]#rm blade.Z 

[root @edu00 linux]#rm report.txt tempfile object.mainroutine hello.java

[root @edu00 linux]#rm -r blade  

: blade와 하위 디렉토리 파일 모두를 제거

[root @edu00 /]#rm –rf * ( 이 명령을 사용할 경우 항상 현재 작업 디렉토리를 확인)

 

rmdir

remove directory의 의미이며 원하는 디렉토리를 제거한다. 단 디렉토리가 비어있을 경우에만 삭제가 가능하다.

 

1] 형식

# rmdir 디렉토리

 

2] 옵션

-p : 경로명에 따라 디렉토리를 삭제한다. 단 하위 디렉토리가 비어있을 경우에만 삭제가 가능하다.

 

cp

파일을 현재의 위치나 다른 디렉토리로 복사(copy)한다.

 

1] 형식

#cp [ -옵션 ] 파일명1 파일명2

#cp [ -옵션 ] 파일명 디렉토리

 

2] 옵션

-a : 가능한 한 원 파일의 구조와 속성을 그대로 복사한다.

-b : 복사할 때 덮어쓰게 되는 파일은 백업을 만든다.

-f : 복사 위치에 존재하는 파일을 제거하고 복사한다.

-i : 복사 시 같은 이름의 파일이 존재한다면 덮어쓸 것인가 확인한다.

-P : 원본 파일의 소유자, 그룹, 권한, 시간 기록을 그대로 복사한다.

-r : 파일과 하위 디렉토리에 포함된 파일 모두를 재귀적으로 복사한다.

만일 파일명2가 이미 존재하는 파일의 이름이라면 기존에 있던 파일은 사라지고 새로운 복사본 파일로 바뀐다. 이것이 원하지 않는 결과라면 -i 옵션을 주어서 확인 작업을 거칠 수 있다.

-I : 옵션은 파일명2가 이미 존재하는 이름이라면 그대로 복사할 것인지 아닌지를 선택할 수 있게 물어온다.

 

3] 사용 예

[root @edu00 linux]# cp -i blade.Z temp.Z

[root @edu00 linux]# cp -r * /root

: 당연히 -r 옵션은 파일명2가 디렉토리 이름일 때만 사용이 가능하다.

[root @edu00 linux]#cp –P a/b/c test

 

mv

move의 의미이며 파일의 위치를 이동하거나 파일의 이름을 바꾸어준다.

 

1] 형식

#mv [ -옵션 ] 파일명1 파일명2

#mv [ -옵션 ] 파일명() 디렉토리명

 

2] 옵션

-f : 같은 이름의 파일이 존재하고 쓰기 권한이 금지되어 있더라도 물어보지 않고 덮어쓰기를 해버린다. 이런 경우 이 옵션을 사용하지 않으면 사용자에게 다시 확인을 할 것이다.

-i : 파일을 덮어쓰기 전에 사용자에게 확인한다. 기존에 있던 파일을 원치 않게 잃어버리는 수가

있기 때문에 확실하지 않다면 -i 옵션을 사용하는 것을 권한다.

 

3] 사용 예

[root @edu00 linux]#mv sisap.hong victor.dongki readme.txt  ../friend 

[root @edu00 linux]#mv blade.Z ../kimtaihan.Z 

[root @edu00 linux]#mv /home/blade  /home/friend 

[root @edu00 linux]#mv sisap.doc LeeKiHong.doc

 

chmod

파일의 모드를 바꾼다. 파일의 모드는 권한(permission) 을 제어한다.

 

1] 형식

#chmod [ -옵션 ] 모드 파일명()

 

2] 옵션

-f : 파일의 권한이 바뀔 수 없어도 에러 메시지를 출력하지 않는다.

-v : 변경된 권한에 대해서 자세히 기술한다.

-R : 디렉토리와 파일들의 권한을 재귀적으로 모두 바꾼다.

 

3] 사용 예

[root @edu00 linux]#chmod 666 broadboard 

파일을 모두가 읽고 쓸 수 있도록 한다.

[root @edu00 linux]#chmod 746 broad

파일 권한을 -rwxr--rw-로 변경한다.

[root @edu00 linux]#chmod o+x,g-w broadboard

 

ln

두 개의 파일 사이에 링크를 만들어, 하나의 파일을 두 개 이상의 이름으로 접근이 가능하도록 한다.

1] 형식

#ln [ -s ] 파일명1 파일명2

#ln 파일명들 디렉토리

 

2] 옵션

-s : 하드 링크 대신 심볼릭 링크를 만든다.

 

3] 사용 예

[root @edu00 linux]#ln project theplan 

두 개의 이름은 같은 문서를 의미한다

 

nl

line number의 의미이며 파일을 출력할 때 파일의 각 라인앞에 라인 번호를 붙여서 화면에 출력한다.

 

1] 사용 예

[root @edu00 linux]#nl /etc/passwd

 

이상입니다~~

 

감사합니다.

 

728x90
반응형

'IT > 리눅스마스터1급' 카테고리의 다른 글

파일시스템  (0) 2022.05.19
디스크 관리 명령어  (0) 2022.05.19
Man 명령어  (0) 2022.05.11
리눅스 파티션  (0) 2022.05.11
리눅스 기본 하드웨어 정보 확인방법  (0) 2022.05.11