2017-10-08 58 views

回答

1

效率不高,由於sh調用每個文件,但這應該工作,並且是安全的:

find path -type f -name '..*' -execdir sh -c 'fn=$1; dots=${fn%%[^.]*}; cleaned=${fn:${#dots}}; mv -nv "$fn" "$cleaned"' -- {} \; 

它是如何工作的:

  • 查找開頭的文件,至少2點。
  • 執行一個sh(與命令序列)中的文件的目錄,傳遞文件名作爲參數(sh -c '...' -- {}
  • 存儲的文件名中fn
  • 店鋪在dots
  • 計算的點的前綴的新的文件名作爲fn子串,的dots
  • 長度之後開始執行mv
+0

ñ冰。但是我建議使用'mv -n'或'-i'來避免意外覆蓋現有文件的相同名稱。 –

+0

@GordonDavisson好主意,謝謝! – janos