다음과 같은 파일이 있습니다.
/var/www/html/media/2018@03@01@vi_0005_20180301_110203.h264.v0005.th.jpg
.
이 파일을 찾아 다른 폴더에서 실행되는 bash 스크립트에서 /var/www/html/media
mp4로 이름을 바꾸고 싶습니다.h264
내 변수는 다음과 같습니다
mediapath="/var/www/html/media"
filemp4=vi_0005_20180301_110203.mp4
fileh264=vi_0005_20180301_110203.h264
변수 없이 작동하는 명령을 시도했지만 rename
사용할 때 불만이 표시됩니다. 미디어 폴더에 표시하는 방법도 모르겠습니다.
rename 's/${fileh264}/${filemp4}/' *${fileh264}*
Global symbol "$mediapath" requires explicit package name (did you forget to declare "my $mediapath"?) at (user-supplied code).
Global symbol "$fileh264" requires explicit package name (did you forget to declare "my $fileh264"?) at (user-supplied code).
Global symbol "$mediapath" requires explicit package name (did you forget to declare "my $mediapath"?) at (user-supplied code).
Global symbol "$filemp4" requires explicit package name (did you forget to declare "my $filemp4"?) at (user-supplied code).
저도 사용해봤는데 find
뭐가 mv
문제인지 모르겠네요.
find ${mediapath} -name "*${fileh264}*" -exec bash -c 'mv $0 ${0/${fileh264}/${filemp4}}' {} \;
어떤 도움이라도 대단히 감사하겠습니다! 감사해요.
답변1
해결책은 큰따옴표가 필요하다는 것입니다.
rename "s/${fileh264}/${filemp4}/" ${mediapath}/*${fileh264}*
답변2
Bash에서 인용하는 것은 유선으로 이루어질 수 있습니다.
작은따옴표로는 아무 것도 설명할 수 없다는 점을 기억해야 합니다. A는 변수의 시작 부분이 아닌 $
ASCII로 해석됩니다 .$
다양한 견적 방법을 결합하여 다양한 목표를 달성할 수 있습니다. 다음 링크를 확인하고 "강력한 인용문" 섹션을 읽어 보시기 바랍니다. http://wiki.bash-hackers.org/syntax/quoting
@allemtura가 말했듯이 올바른 방법은 큰 따옴표를 사용하여 변수를 올바르게 해석하는 것입니다.