File / Directory

정승균·2020년 12월 9일
0

리눅스

목록 보기
7/29
post-thumbnail

Ⅰ. 경로


1. Absolute Path (절대 경로)

  • / 루트 경로로 시작함
  • ex) /usr/local

2. Relateive Path (상대 경로)

  • '.' 으로 시작하는 경로
  • '.' 은 생략 가능
  • ex) ./teamdev2/jsg2 or teamdev2/jsg2

Ⅱ. 디렉토리 관련 명령어


1. 현재 디렉토리 표시

  • $ pwd : (print working directory)
jsg@jsg-ubuntu:~$ pwd
/home/jsg

2. 디렉토리 변경

  • $ cd [directory] : (change directory)
줄임 기호의미
/root 경로
~ or 생략시home 경로
-이전 경로
..한 단계 위 경로
jsg@jsg-ubuntu:~$ pwd			# 현재 경로
/home/jsg
jsg@jsg-ubuntu:~$ cd /tmp		# /로 시작하는 절대 경로
jsg@jsg-ubuntu:/tmp$ cd ../usr		# 한 단계 위로 이동 후 usr로 이동
jsg@jsg-ubuntu:/usr$ cd -		# 이전 경로인 /tmp로 이동
/tmp
jsg@jsg-ubuntu:/tmp$ cd ~		# 홈 디렉토리로 이동
jsg@jsg-ubuntu:~$ cd ./문서		# 홈 디렉토리에 대한 상대 경로
jsg@jsg-ubuntu:~/문서$

3. 디렉토리 안에 있는 파일 리스트

  • $ ls [option] [file_name]
  • 파일 지정 안하면 현재 디렉토리
옵션설명
-a숨겨진 파일도 표시
-l자세한 내용 표시
-t시간 순 정렬
-r역순으로 표시
  • ls -l 보는 법
file access mode

4. 디렉토리 생성

  • $ mkdir [-p] file_name (make directory)
  • -p 옵션을 주면 한 단계 이상의 디렉토리 생성 가능
jsg@jsg-ubuntu:~$ ls
examples.desktop  공개  다운로드  문서  바탕화면  비디오  사진  음악  템플릿
jsg@jsg-ubuntu:~$ mkdir testdir; ls
examples.desktop  공개      문서      비디오  음악
testdir           다운로드  바탕화면  사진    템플릿

5. 디렉토리 삭제

  • $ rmdir directory라는 명령어가 있지만 디렉토리가 비어있어야 쓸 수 있으므로
  • $ rm -rf file_name 을 더 자주 씀
jsg@jsg-ubuntu:~$ rm -rf testdir
jsg@jsg-ubuntu:~$ ls
examples.desktop  공개  다운로드  문서  바탕화면  비디오  사진  음악  템플릿

파일 관련 명령어


1. 간단한 텍스트 파일 생성

  • $ echo "Hello World" > testdir/hello.txt
jsg@jsg-ubuntu:~$ echo "Hello World" > testdir/hello.txt; ls testdir
hello.txt

2. 텍스트 파일 출력

  • $ cat testdir/hello.txt
jsg@jsg-ubuntu:~$  cat testdir/hello.txt
Hello World

3. 파일 변경

  • $ chmod XXX file_name : (changemode) 권한 변경
jsg@jsg-ubuntu:~$ chmod 664 testdir; ls -l testdir
ls: 'testdir/hello.txt'에 접근할 수 없습니다: 허가 거부
합계 0
-????????? ? ? ? ?             ? hello.txt
  • # chown user_name file_name : (change owner) owner 변경
root@jsg-ubuntu:/home/jsg# chown jsg2 testdir/hello.txt
root@jsg-ubuntu:/home/jsg# ls -l testdir/hello.txt
-rw-rw-r-- 1 jsg2 jsg 12 Dec 10 00:24 testdir/hello.txt
  • # chgrp group_name file_name : (change group) group 변경
root@jsg-ubuntu:/home/jsg# chgrp teamdev2 testdir/hello.txt
root@jsg-ubuntu:/home/jsg# ls -l testdir/hello.txt
-rw-rw-r-- 1 jsg2 teamdev2 12 Dec 10 00:24 testdir/hello.txt

4. 파일 정보 확인

  • $ file file_name : 타입 확인, magic data를 읽음
jsg@jsg-ubuntu:~$ file testdir/hello.txt
testdir/hello.txt: ASCII text
  • $ stat file_name : 파일 메타 데이터 출력
jsg@jsg-ubuntu:~$ stat testdir/hello.txt
  File: 'testdir/hello.txt'
  Size: 12        	Blocks: 8          IO Block: 4096   일반 파일
Device: 801h/2049d	Inode: 1175830     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/     jsg)   Gid: ( 1000/     jsg)
Access: 2020-12-10 01:38:30.838601254 +0900
Modify: 2020-12-10 00:24:52.762704113 +0900
Change: 2020-12-10 01:07:50.481252194 +0900
 Birth: -

5. 파일 업데이트

  • $ touch file_name : 메타 정보 갱신
  • 파일이 존재하지 않으면 생성
jsg@jsg-ubuntu:~$ stat testdir/hello.txt 
  File: 'testdir/hello.txt'
  Size: 0         	Blocks: 0          IO Block: 4096   일반 빈 파일
Device: 801h/2049d	Inode: 1175791     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/     jsg)   Gid: ( 1000/     jsg)
Access: 2020-12-10 01:54:39.796622302 +0900
Modify: 2020-12-10 01:54:39.796622302 +0900
Change: 2020-12-10 01:54:39.796622302 +0900
 Birth: -

jsg@jsg-ubuntu:~$ touch testdir/hello.txt
jsg@jsg-ubuntu:~$ stat testdir/hello.txt
  File: 'testdir/hello.txt'
  Size: 0         	Blocks: 0          IO Block: 4096   일반 빈 파일
Device: 801h/2049d	Inode: 1175791     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/     jsg)   Gid: ( 1000/     jsg)
Access: 2020-12-10 01:55:19.872828519 +0900
Modify: 2020-12-10 01:55:19.872828519 +0900
Change: 2020-12-10 01:55:19.872828519 +0900
 Birth: -

6. 파일 복사

  • $ cp file new_file : (copy)
jsg@jsg-ubuntu:~$ cp -r testdir testdir2
jsg@jsg-ubuntu:~$ ls
examples.desktop  testdir2  다운로드  바탕화면  사진  템플릿
testdir           공개      문서      비디오    음악

7. 파일 이동

  • $ mv file new_file : (move)
  • 이름 바꾸는 용도로도 쓸 수 있음
jsg@jsg-ubuntu:~$ mv testdir2/hello.txt testdir/hello2.txt; ls testdir
hello.txt  hello2.txt

8. 파일 삭제

  • $ rm file_name (remove)
  • $ rmdir file_name은 디렉토리가 비어있어야만 삭제되므로 잘 안씀
jsg@jsg-ubuntu:~$ rm testdir/hello2.txt; ls testdir
hello.txt

9. 파일 검색

  • $ find directory [expression] : 디렉토리에서 조건에 맞는 파일 찾음
expression설명
-name file_name이름으로 검색. "*" 사용 가능
-size number파일 크기로 검색. +- 부호 가능
-mtime time변경된 시간으로 검색(day)
-mmin time변경된 시간으로 검색(min)
-inum numberinode 번호로 검색
-samefile file_name하드링크로 검색
-maxdepth level최대 깊이로 검색, 여러 조건일 경우 맨 앞에 위치
-mindepth level최소 깊이로 검색, 여러 조건일 경우 맨 앞에 위치
-a (생략가능)조건 AND 연결
-o조건 OR 연결
  • 예시를 위해 파일 생성
jsg@jsg-ubuntu:~$ mkdir ~/temp
mkdir: `/home/jsg/temp' 디렉토리를 만들 수 없습니다: 파일이 있습니다
jsg@jsg-ubuntu:~$ cd temp
jsg@jsg-ubuntu:~/temp$ for i in {8..21}; do dd bs=100000 count=$i \
if=/dev/zero of=./${i}00k.dat; done

jsg@jsg-ubuntu:~/temp$ ls -l
합계 19852
-rw-rw-r-- 1 jsg jsg 1000000 12월 10 02:11 1000k.dat
-rw-rw-r-- 1 jsg jsg 1100000 12월 10 02:11 1100k.dat
-rw-rw-r-- 1 jsg jsg 1200000 12월 10 02:11 1200k.dat
-rw-rw-r-- 1 jsg jsg 1300000 12월 10 02:11 1300k.dat
-rw-rw-r-- 1 jsg jsg 1400000 12월 10 02:11 1400k.dat
-rw-rw-r-- 1 jsg jsg 1500000 12월 10 02:11 1500k.dat
-rw-rw-r-- 1 jsg jsg 1600000 12월 10 02:11 1600k.dat
-rw-rw-r-- 1 jsg jsg 1700000 12월 10 02:11 1700k.dat
-rw-rw-r-- 1 jsg jsg 1800000 12월 10 02:11 1800k.dat
-rw-rw-r-- 1 jsg jsg 1900000 12월 10 02:11 1900k.dat
-rw-rw-r-- 1 jsg jsg 2000000 12월 10 02:11 2000k.dat
-rw-rw-r-- 1 jsg jsg 2100000 12월 10 02:11 2100k.dat
-rw-rw-r-- 1 jsg jsg  800000 12월 10 02:11 800k.dat
-rw-rw-r-- 1 jsg jsg  900000 12월 10 02:11 900k.dat
  • find 명령에 따른 결과값
명령어결과
$ find . -name '[89]*k.dat'./900k.dat
./800k.dat
$ find . -name '*k.dat' -a -size 1M./900k.dat
./800k.dat
./1000k.dat
$ find . -name '*k.dat' -size +1500k -size -1800k./1600k.dat
./1800k.dat
./1700k.dat
  • $ find ... -exec 명령어 \; : find 명령 후 작업 지시
  • 끝이 \; 인 경우 하나씩, 끝이 \+ 경우는 마지막에 한번에 실행
jsg@jsg-ubuntu:~/temp$  find . -name "*k.dat" -exec rm {} \;
jsg@jsg-ubuntu:~/temp$ ls -a
.  ..

0개의 댓글