Linux
使用空白從多個文件中刪除某些字元
我正在嘗試重命名目錄中的一堆音樂曲目,但出現此錯誤:
移動多個文件時,最後一個參數必須是目錄
這是腳本:
for file in * ; do mv $file $(echo $file |sed 's/^.\{5\}//g') done
這適用於沒有空格的文件,我將如何修改此腳本?
使用引號:
mv -- "$file" "$(echo "$file" | sed ...)"
Else
mv
看到多個參數。一個名為的文件名將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的評論,我添加了標誌。現在以破折號開頭的文件-
也被正確處理。