cp, mv, rm, mkdir
이 네개의 명령어는 리눅스 명령어들에서 가장 흔하게 사용된다. 파일과 디렉토리를 조작하기위한 기초적인 명령어이다.
솔직히 이런 명령어들은 일반 마우스로 조작하는 파일탐색기로 잘 처리할 수 있다.
파일탐색기로 드래그, 옮기기, 잘라내기를 할 수 있다.
근데 왜 커맨드로 해야하냐?
매우 강력하고 유연하기 때문이다.
간단한 파일조작은 파일탐색기로 하는것이 간단하다. 하지만 복잡한 파일조작 작업들은 명령어로 처리하는 것이 더 간단하다.
와일드카드
파일 조작명령어를 훨씬 강력하게 만들어주는 쉘의 특징을 알아보자.
쉘은 파일이름을 너무 많이 사용한다. 따라서 파일이름들의 그룹을 빠르게 특정할 수 있게 도와주는 특별한 문자들을 제공한다.
* : 어떤 문자들이건 매칭된다.
? : 어떤 문자든 한개가 매칭된다.
[characters] : 특정한 문자집합에 속하는 문자한개와 매칭된다.
→[:alnum:] : 모든 숫자
→[:alpha:] : 모든 알파벳
→[:digit:] : 모든 숫자
→[:upper:] : 모든 대문자 알파벳
→[:lower:] : 모든 소문자 알파벳
[!characters] : 특정한 문자집합에 포함안되는 문자 한개와 매칭된다.
예) [![:lower:]]
와일드 카드를 사용하면 간편하게 파일들을 선택할 수 있다.
* | 모든 파일이름들 |
g* | g로 시작하는 모든 파일이름들 |
b* | b로 시작하고 확장자가 .txt인 경우 |
Data??? | Data로 시작하고 나머지 문자가 3개인경우 = Data + 문자3개 |
[abc]* | 문자 시작이 a 혹은 b 혹은 c로 시작하는 경우 |
[[:upper:]]* | 첫글자가 대문자인 경우 |
BACKUP.[[:digit:][:digit:] | 확장자가 숫자+숫자인경우 |
*[![:lower:]] | 파일이름의 끝이 소문자가 아닌 경우 |
mv : 어떻게 사용하냐에 따라 파일이동, 이름변경이 결정된다.
변경되는 이름으로 파일, 디렉토리가 없는 경우
mv file1 file2 : file1의 이름을 file2로 변경한다.
mv dir1 dir2 : 디렉토리1의 이름을 디렉토리2로 변경한다.
변경되는 이름으로 파일,디렉토리가 있는 경우
mv file1 file2 : file2에 file1의 내용을 덮어씌기 한다.
mv dir1 dir2 : 디렉토리2에 디렉토리1을 넣는다.
mv file1 file2 dir1 : dir1에 file1, file2를 넣는다.
mv dir1 dir2 dir3 : dir3에 dir1, dir2를 넣는다.
mv dir1 dir2 dir3 dir4: dir4에 dir1, dir2, dir3를 넣는다.
mv dir[[:digit:]] .. : 상위폴더로 dir+숫자인 모든 디렉토리를 옮긴다. (이런식으로 와일드카드를 사용할 수 있다.)
rm -r dir[[:digit:]] : dir+숫자인 모든 디렉토리를 삭제해라.
mv dir1 ../*.bak dir2 : dir2에 dir1과 현재 작업디렉토리의 상위폴더에 있는 확장자명이 .bak인 모든 파일을 dir2로 이동시켜라