我有類似下面的列表,在一個名爲lista.txt文件:重命名文件與名稱的列表從另一個列表中
mickey
donald
daffy
bugs
我有一個包含很多文件的文件夾:文件名1,文件名.. 。文件名N。
我想通過這些文件進行迭代來實現:
filename1 => mickey
filename2 => donald ...
你能爲我提供工作的示例代碼完成這個任務?
我有類似下面的列表,在一個名爲lista.txt文件:重命名文件與名稱的列表從另一個列表中
mickey
donald
daffy
bugs
我有一個包含很多文件的文件夾:文件名1,文件名.. 。文件名N。
我想通過這些文件進行迭代來實現:
filename1 => mickey
filename2 => donald ...
你能爲我提供工作的示例代碼完成這個任務?
這不是我的風格,爲你做你的工作。我寧願你發佈你已經試過的東西,所以我可以幫你調試它,但這個問題很簡單,反正我會咬它。
x=1; for y in $(cat lista.txt); do mv $y filename$x; let x=$x+1; done
對不起,我在我的問題中犯了一個可怕的錯誤。真正的文件名不是編號,而是隨便的。不是f1,f2 ... fn。但f_a,f_pippo,f123等......我如何與這兩個列表進行交互? –
let "count=1"
for newname in $(cat lista.txt); do
mv "filename$count" "$newname"
let "count++"
done
使用bash數組:
files=(*)
i=0
while read -r new_name; do
mv "${files[$i]}" "$new_name"
((i++))
done < lista.txt
我用雙重定向新的文件描述符根據給定的「Filelist.txt中」這種方式重命名一個目錄下的所有FLAC文件:
while read -u 9 filename ; do
read -u 8 newname
echo mv "$filename" "$newname"
done 9<<<"$(ls -1 *flac)" 8< filelist.txt
目錄上的每個.flac文件名在文件描述符9中通過文件描述符9傳遞給變量「filename」迭代,filelist.txt的每一行都通過文件描述符8到變量「newname」。
是的,其中一個新的文件描述符可以避免,只需使用默認的標準輸入(刪除「-u 9」和「9」),但我習慣於不使用stdin;這樣你可以在循環內部包含一個讀取語句來進行交互或控制,並且它不會被重定向的數據填充。
回聲是「僅測試」,應在批准操作後刪除。
您是否有任何條件將文件夾中的文件映射到字符串?我這樣問是因爲:如果你用'ls'來獲取文件,你會按照字母順序排序,但最終你可以有不同的映射'filename_X => string_Y' –