2014-09-01 5 views
2

.zip 파일에서 파일을 추출하여 텍스트 파일로 변환하는 bash 스크립트를 작성하고 싶습니다. 모든 텍스트 파일이므로 파일 이름 끝에 ".txt"이 거의 추가됩니다. 확장자는 없습니다.bash 스크립트 : 파일 압축 해제 및 변환

나는 껍질이 아주 새롭다. 나는 이것을 찾았다 :

cd /path/to/files 
for i in *.gz 
do 
    gunzip $i 
done 
for i in *.zip 
do 
    unzip $i 
done 

내가 파일을 추출한다고 상상하지만 어떻게 이름을 바꾸거나 변환합니까? 당신은 .txt 확장이없는 모든 파일을 찾기 위해 사용 extglob을 사용할 수 있습니다

+1

['find'] (http://man7.org/linux/manage-man1/find.1.html) 명령을 사용하여'.zip'로 끝나지 않는 모든 파일을 찾을 수 있습니다 '.gz'를 추가하고 자동으로 파일의 이름을 바꾸어'.txt' 접미사를 추가합니다. –

답변

2

:

shopt -s extglob 

for f in !(*.txt); do 
    mv "$f" "$f".txt 
done 

PS : 또한 확장자를 가진 모든 파일을 일치하도록 !(*.txt) 패턴을 사용할 수 있습니다.

+1

물론 ZIP 및 GZip 파일의 이름도 바뀝니다. –

+0

매우 사실입니다. 필자는이 glob 패턴을 사용하여 답변을 작성했지만'! (* .txt | *. *)'라고 대답했지만'모든 텍스트 파일입니다 '라는 질문을 다시 읽으므로 모든 텍스트가 아닌 파일은 이사 갔다. – anubhava

+0

'mv "$ f {,. txt}';) – jm666