Files

如何從目錄中的所有文件名中刪除_

  • February 20, 2018

在 bash 中,我有一個解壓縮的目錄,其中有許多以_.

我很確定我可以使用renamemv簡單地刪除_每個文件的前綴。

我嘗試:

for file; do
   mv "$file" "${file//_/}"
done

但這並沒有我想要的效果。我可以使用什麼命令_從所有文件中刪除前綴?

1)for file; do循環位置參數,即腳本的命令行參數。用於for file in *; do遍歷目錄中的文件(或_*僅使用帶有下劃線前綴的文件。)

2)您可以使用${file#_}而不是${file//_/}從文件名的開頭刪除下劃線。${par#word}專門從一開始就刪除了一個部分,它是一個標準功能,不像${par/pat/repl}. 當然${file//_}會刪除所有斜線(因為您使用了雙斜線),而不僅僅是第一個。

  1. 至少在 Linux (GNU userland) 和 FreeBSD 上,您可以使用mv -n它來要求它不要覆蓋任何文件。以防萬一。

所以,

for file in _*; do
   mv -n -- "$file" "${file#_}"
done

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