在一個檔案夾中,我有很多用數字序列化的音頻檔案,它們都是 mp3 格式,然后在同一個檔案夾中,我有很多子檔案夾,都帶有數字和斜線以及后續字符,我想將數字化的音頻檔案移入通過終端命令批量到對應編號開頭的檔案夾。目前我使用的是一根桿的移動,方法如下。
mv 1.mp3 1-*
mv 2.mp3 2-*
mv 3.mp3 3-*
mv 4.mp3 4-*
mv 5.mp3 5-*
mv 6.mp3 6-*
mv 7.mp3 7-*
mv 8.mp3 8-*
mv 9.mp3 9-*
mv 10.mp3 10-*
mv 11.mp3 11-*
mv 12.mp3 12-*
mv 13.mp3 13-*
mv 14.mp3 14-*
mv 15.mp3 15-*
mv 16.mp3 16-*
mv 17.mp3 17-*
mv 18.mp3 18-*
mv 19.mp3 19-*
mv 20.mp3 20-*
mv 21.mp3 21-*
mv 22.mp3 22-*
mv 23.mp3 23-*
有沒有辦法用一個代碼來做到這一點?
uj5u.com熱心網友回復:
您可以在沒有內部回圈的情況下執行此操作:
for mp3 in *.mp3; do
subdir=( ${mp3%.*}-* ) # Create array of subdirs if there are many
[[ -d $subdir ]] && mv "$mp3" "$subdir/" # Check if $subdir exists than mv
done
您還可以遍歷子目錄而不是 .mp3:
for subdir in *[0-9]-*; { mv "${subdir%-*}.mp3" "$subdir"; }
uj5u.com熱心網友回復:
for file in *.mp3; do
b="${file%.mp3}"
for d in "$b"-*; do
mv "$file" "$d"
break
done
done
內部回圈是為了確保通配符擴展為恰好一個匹配項,或者移動到第一個匹配項中。您可能還想確保目標是一個目錄。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/503766.html
