Bash
重命名具有相似名稱的數千個文件
我正在創建一個 bash 腳本來重命名我的文件。這些文件在同一個文件夾中,看起來都像這樣
1xxx_(一堆字元)=(一堆字元)=1234567890
現在我想要的是只留下最後一個 1234567890。基本上刪除從前面到第二次出現 = 的每個字元
您可以使用 shell 的參數擴展功能:特別是
${parameter#word} ${parameter##word} Remove matching prefix pattern. The word is expanded to produce a pattern just as in pathname expansion. If the pattern matches the beginning of the value of parameter, then the result of the expansion is the expanded value of parameter with the shortest matching pattern (the ``#'' case) or the longest matching pat‐ tern (the ``##'' case) deleted.
所以像
for file in *; do echo mv -- "$file" "${file##*=}"; done
(刪除
echo
如果它似乎做正確的事情)。您可能面臨的一個問題是,刪除前綴後文件名可能變得不唯一。您可以選擇使用
-n
or--no-clobber
選項跳過重命名這些案例mv
:for file in *; do mv --no-clobber -- "$file" "${file##*=}"; done
或使用
-b
or--backup
選項創建不同的備份:最直接for file in *; do mv --backup=numbered -- "$file" "${file##*=}"; done
這將添加區分後綴
.~1~
,.~2~
依此類推。