如何將已知名稱的檔案重新命名為儲存在變數中的新名稱?

如何將已知名稱的檔案重新命名為儲存在變數中的新名稱?

[更新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。以點 ( .) 開頭的名稱是「隱藏」的,plainls會跳過它們,您需要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

相關內容