본문 바로가기

Linux and Unix/SHELL

리눅스, 윈도우에서 확장자에 따른 파일 목록 작성하기

시스템을 사용하거나 운영하다 보면 디렉토리의 파일 확장자별 목록을 작성해야 하는 경우가 발생한다.
이런 경우에 사용할 수 있는 쉘스크립트와 command를 사용해 보자

리눅스 쉘(SHELL)에서 확장자별 파일 목록 작성

# with a bash for loop

for f in /home/data/*.wav; 
	do echo "file '$f'" >> mylist.txt; 
done

# or with printf

printf "file '/home/data/%s'\n" *.wav > mylist.txt

위의 쉘을 실행하면 mylist.txt에는 다음과 같은 내용으로 기록된다.
file '/home/data/1.wav'
file '/home/data/2.wav'
file '/home/data/3.wav'
file '/home/data/4.wav'
file '/home/data/5.wav'

그리고 mylist.txt 파일은 명령어를 실행하는 경로에 생성된다.

file 이라는 글자와 /home/data/ 를 제외하고 순수하게 파일명만 저장하고 싶다면 다음과 같이 수정한다.

# with a bash for loop
cd /home/data/
for f in *.wav; 
	do echo "'$f'" >> mylist.txt; 
done

# or with printf
cd /home/data/
printf "'%s'\n" *.wav > mylist.txt

위와 같이 수정했을 경우에 mylist.txt 파일은 /home/data에 생성되고, mylist.txt 내부에는 파일명만 기록된다.

윈도우(즈)에서 확장자별 파일 목록 작성

(for %i in (*.wav) do @echo file '%i') > mylist.txt

윈도우즈에서도 경로 이동이나 실행 위치, 파일 생성위치는 리눅스와 동일하게 동작한다.
단, 파일을 찾아서 리스트로 만드는 명령 구문만 다르다.