2012-06-18 4 views
0

스크립트의 변수에 명령의 출력을 설정하려고합니다. 하루 종일 수색했는데 명령이 맞는 것처럼 보입니다. 하지만 스크립트를 실행할 때마다 변수를 할당하고 실행하지 않고 명령을 실행합니다.이름 바꾸기 명령의 결과를 변수에 어떻게 할당합니까?

여기에 스크립트의 관련 부분입니다 :

ffname=$(rename 's/_1080p_12000//' *.*) 
echo $ffname 

내가 명령을 실행하지 않고 스크립트의 다른 부분에 변수로 ffname 사용할 필요 ..하지만 일을하고 싶어 것 같지 않습니다. 누구든지 어떤 제안이 있습니까?

+0

우분투의'rename'은 -v를 사용하지 않는 한 아무 것도 출력하지 않습니다. 모두 이름 바꾸기를 피하는 것이 좋습니다. – jordanm

답변

1

출력을 얻으려면 -n (no-act) 옵션을 rename에 추가 할 수 있습니다.

ffnames=($(rename -n 's/_1080p_12000//' *.* | awk '{print $1,$NF}')) 

결과에 여러 항목이 포함되어 있습니다. 그래서 배열을 유지해야합니다.

그런 다음 -n 옵션없이 실제 이름을 변경하십시오.

0

Bash를 사용하는 경우 채워진 변수에 shell parameter expansion 대체 연산자를 사용하여 삭제할 파일 이름 부분을 바꿀 수 있습니다. 예를 들어 : 만약 당신이 좋아하면

$ ffname=foo_1080p_12000.bar 
$ echo "${ffname/_1080p_12000}" 
foo.bar 

그러나,이 명령을 실제 MV를 수행하거나 이름을 당신까지 유지됩니다하거나 ffname에 다시 수정 된 값을 다시 할당 할 수 있습니다.

관련 문제