2016-10-31 2 views
0

파일 이름의 텍스트를 가져 와서 명령에서 사용할 수있는 문자열로 변환하는 방법을 고안했습니다.쉘 스크립팅 : 파일 문자열을 명령에 사용할 수 있도록 변환하십시오.

I (예 : [foo] bar - foo.mkv) 파일 이름을 싶습니다

그들은 명령과 같은 mv에서 사용할되도록 공백, 대괄호 (예 \[foo\]\ bar\ -\ foo.mkv에 대한) 다른 문자로 백 슬래시를 추가합니다.

나를 도와 주셔서 감사합니다.

+2

이 작업을 수행 할 필요가 없습니다. 파일 이름을 그대로 100 % 사용할 수 있습니다. 사용하지 않을 때 특별한 목적이없는 한 모든 쉘 변수를 인용해야하는 것처럼 인용 할 필요가 있습니다 . –

답변

4

나는 그것에 대한 필요성이 없다고 생각합니다. 파일 이름 변수를 큰 따옴표로 묶으면 명령이 나머지를 처리합니다.

$ touch "[foo] bar - foo.mkv" 
$ ls 
[foo] bar - foo.mkv 
$ mv "[foo] bar - foo.mkv" "abcd" 
$ ls 
abcd 

그러니 그냥 문자열을 큰 따옴표로 묶어야하고 문제를 해결해야합니다

mv "$oldname" "$newname" 

이 필요가 거의 없다,하지만 당신은 대체를 할 경우이 사용할 수 있습니다

$ printf '%q' "[foo] bar - foo.mkv" 
\[foo\]\ bar\ -\ foo.mkv