Linux
根據另一個目錄上的文件名重命名目錄中的文件
我不確定這裡是否有人問過這個問題,但這是我的問題。我有文件可以說
dir1
命名:File 1.mp4 File 2.mp4 etc..
現在在目錄上
dir2
,我有名為:Sub 1.srt Sub 2.srt etc..
我怎麼能重命名
Sub 1.srt
所以它變成File 1.srt
. 所以基本上將所有*.srt
文件重命名為*.mp4
文件名。兩個目錄上的文件數量相同,並且使用printf %s\\n *
的文件是排序的。
由於兩個目錄包含相同數量的文件,這裡有一種方法將文件名保存在兩個數組中,然後對數組索引列表中的每個索引進行重命名(因為兩個數組具有相同的長度):
mp4paths=(dir1/*.mp4) # save mp4 file names in array mp4names=("${mp4paths[@]##*/}") # remove leading path components name=("${mp4names[@]%.*}") # remove extension srt=(dir2/*.srt) # save srt file names in array for i in "${!srt[@]}" # for each index in the list of array indices do # do stuff here... mv "${srt[$i]}" dir2/"${name[$i]}".srt done
這應該適用於所有類型的文件名。
對於“試執行”替換
mv
為printf '%s -> %s\n'
.