Linux

使用空白從多個文件中刪除某些字元

  • October 24, 2015

我正在嘗試重命名目錄中的一堆音樂曲目,但出現此錯誤:

移動多個文件時,最後一個參數必須是目錄

這是腳本:

for file in * ; do
   mv $file  $(echo $file |sed 's/^.\{5\}//g')
done

這適用於沒有空格的文件,我將如何修改此腳本?

使用引號:

mv -- "$file" "$(echo "$file" | sed ...)"

Elsemv看到多個參數。一個名為的文件名將file name with spaces是 4 個參數mv。因此錯誤:when moving multiple files, last argument must be a directory. 當mv有超過 2 個參數時,假設您要將多個文件移動到一個目錄(這將是最後一個參數)。


但是,您似乎想從文件名中刪除前 5 個字元。這可以通過以下方式更簡單地完成bash

mv -- "$file" "${file:5}"

編輯--:感謝@pabouk的評論,我添加了標誌。現在以破折號開頭的文件-也被正確處理。

引用自:https://unix.stackexchange.com/questions/238302