Bash
重命名照片以匹配影片標題
我有一個主要是自動化的媒體伺服器,目前所有內容都放入一個文件夾並按文件副檔名分類到正確的位置。
目前照片以“folder.jpg”命名,我需要重命名它們以匹配電影名稱。
現在的樣子: 之前:
/目錄/
- 文件夾.jpg
- 電影.mp4
- 電影.xml
我需要它看起來像什麼:之後:
/目錄/
- 電影.jpg
- 電影.mp4
- 電影.xml
我將如何將 jpg 與 mp4 匹配。
嘗試:
for movie in ./*/*.mp4; do mv -- "${movie%/*}/folder.jpg" "${movie%.mp4}.jpg"; done
${movie%/*}
並且${movie%.mp4}
都是後綴去除的例子。${movie%/*}
返回電影文件所在的目錄,並${movie%.mp4}
返回電影文件的名稱減去副檔名.mp4
。例子
考慮三個目錄,
dir1
,dir2
和dir3
, 和文件:$ ls -1 */* dir1/Animal Crackers.mp4 dir1/Animal Crackers.xml dir1/folder.jpg dir2/folder.jpg dir2/Monkey Business.mp4 dir2/Monkey Business.xml dir3/Duck Soup.mp4 dir3/Duck Soup.xml dir3/folder.jpg
現在,執行我們的命令:
$ for movie in ./*/*.mp4; do mv -- "${movie%/*}/folder.jpg" "${movie%.mp4}.jpg"; done
執行我們的命令後,文件是:
$ ls -1 */* dir1/Animal Crackers.jpg dir1/Animal Crackers.mp4 dir1/Animal Crackers.xml dir2/Monkey Business.jpg dir2/Monkey Business.mp4 dir2/Monkey Business.xml dir3/Duck Soup.jpg dir3/Duck Soup.mp4 dir3/Duck Soup.xml
多行版本
對於那些喜歡他們的命令分佈在多行的人:
for movie in ./*/*.mp4 do mv -- "${movie%/*}/folder.jpg" "${movie%.mp4}.jpg" done