既知の名前を持つファイルの名前を、変数に格納されている新しい名前に変更するにはどうすればよいですか?

既知の名前を持つファイルの名前を、変数に格納されている新しい名前に変更するにはどうすればよいですか?

[更新-1]:可能であれば、最も簡単なコマンドを学習する動機となる短所を教えてください。


つまり、ディレクトリ内に 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の名前を変更する(ランダムではない)と取得する

これは名前ファイル.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

関連情報