알려진 이름의 파일 이름을 변수에 저장된 새 이름으로 바꾸는 방법은 무엇입니까?

알려진 이름의 파일 이름을 변수에 저장된 새 이름으로 바꾸는 방법은 무엇입니까?

[업데이트-1]:가능하다면 가장 간단한 명령을 배울 수 있도록 동기를 부여해 주세요.


따라서 디렉토리에 하나의 파일이 있습니다.

ls | grep *.mp4 

비디오.mp4

이 명령을 사용하여 파일의 이름을 임의로 바꾸고 다른 디렉터리로 이동합니다.

for a in *.mp4; do mv -n "$a" "${a/*/$RANDOM.mp4}"; done;  mv *.mp4 /home/misdeed/Documents

괜찮습니다. video.mp4의 이름이 무작위로 지정되었습니다.

cd Documents; ls | grep *.mp4

19889.mp4

질문:

사용 방법은 다음과 같습니다.

a="This is name file"
echo $a

이름 파일입니다

*.mp4 이름 바꾸기(무작위 아님) 및 get

이름 파일입니다.mp4


나는 그것과 같은 것이 필요합니다 :

  • a="This is name file"
  • COMMAND FOR RENAME BUT WITHOUT $RANDOM. I WANT USE $a in renamed file

답변1

원래 이름이 미리 알려져 있고 이라고 가정해 보겠습니다 video.mp4. 이름을 바꾸면

mv video.mp4 "$a".mp4

노트:

  • 변수가 비어 있거나 설정되지 않은 경우 최종 이름은 입니다 .mp4. 점( .)으로 시작하는 이름은 "숨겨져 있으며" 일반 ls건너뛰므로 ls -a확인해야 합니다.
  • 대상 이름을 가진 파일이 이미 있는 경우 해당 파일은 손실되고 이전 video.mp4파일이 해당 이름을 사용합니다. 사고를 방지하려면 다음을 고려하십시오 mv -i. 대상 경로가 존재하는지 확인하라는 메시지가 표시됩니다.

답변2

새로운 임의의 파일 이름을 인쇄하기를 원한다고 가정합니까? 이 경우 가장 쉬운 방법은 무작위 변수의 값을 재사용하는 것입니다.

for file in *.mp4; do
  RANDOM_NAME="${file/*/$RANDOM.mp4}";
  mv -n "$file" /home/misdeed/Documents/"$RANDOM_NAME";
  echo "This is name $RANDOM_NAME.mp4";
done

관련 정보