將 (.filename) 檔案重新命名為原始名稱

將 (.filename) 檔案重新命名為原始名稱

我正在嘗試恢復我通過 所做的更改rename

我正在重命名子資料夾中的文件,然後不假思索地嘗試..使用以下命令清除名稱:

rename "s/.././" *

現在我有一個包含 600 個檔案的資料夾,每個檔案名稱的 2 個前字母更改為.zzyGir*

有什麼辦法可以改變「.」嗎?傳回每個檔案名稱的第一個字母而不遺失整個檔案?

我嘗試過不同的事情但沒有運氣,例如:

rename "s/./Di/; *

我也願意接受一次一個文件的解決方案,我主要是想避免遺失文件。

答案1

前兩個字母是歷史。沒有機會讓他們回來。但您可以.按照以下步驟重新命名檔案以去除前導

確保bash在終端機中有

bash

進入檔案名稱錯誤的資料夾

shopt -s dotglob
rename -n 's/^\./Di/' *

如果一切看起來都很好

rename 's/^\./Di/' *

完成與

shopt -u dotglob

解釋

  • rename -n "s/^\./Di/" *

    • -n

      無操作:列印要重新命名的檔案的名稱,但不重新命名。

    • /^\./

      • ^斷言字串開頭的位置

      • \..字面匹配字符

  • shopt -s dotglob&shopt -u dotglob

    • shopt

      shopt [-pqsu] [-o] [optname …]
      

      切換控制可選 shell 行為的設定值。

    • -s

      啟用(設定)每個 optname。

    • -u

      停用(取消設定)每個 optname。

    • dotglob

      如果設置,Bash 會將以 a 開頭的檔案名稱包含.在檔案名稱擴充的結果中。


例子

$ ls -oag
total 88
drwxrwxr-x   2  4096 Jul 17 17:16 .
drwxr-xr-x 226 86016 Jul 17 17:13 ..
-rw-rw-r--   1     0 Jul 17 17:16 .foo

$ rename "s/^\./Di/" *

$ ls -oag
total 88
drwxrwxr-x   2  4096 Jul 17 17:16 .
drwxr-xr-x 226 86016 Jul 17 17:13 ..
-rw-rw-r--   1     0 Jul 17 17:16 Difoo

我不確定你的意思是什麼

有什麼辦法可以改變「.」嗎?傳回每個檔案名稱的第一個字母

你的意思是這樣的嗎?

.zzyGir->zzzzGir

如果是,則在 bash 中使用以下命令:

shopt -s dotglob
rename -n 's/^\.(..)(.*)/$1$1$2/' *

檢查結果並重新命名為

rename 's/^\.(..)(.*)/$1$1$2/' *

最後再次

shopt -s dotglob

答案2

據我了解,您有一個包含如下文件的資料夾:

ls -la

drwxrwxr-x 2 ron ron 4096 Jul 17 20:50 .
drwxrwxr-x 3 ron ron 4096 Jul 17 20:47 ..
-rw-rw-r-- 1 ron ron    0 Jul 17 20:47 .abc
-rw-rw-r-- 1 ron ron    0 Jul 17 20:47 .Gyr
-rw-rw-r-- 1 ron ron    0 Jul 17 20:47 .hig123
-rw-rw-r-- 1 ron ron    0 Jul 17 20:47 .zyz

並且您想要.從所有文件名中刪除以使其:

abc
Gyr
hig123
zyz

為此,您可以使用findrename

find . ! -path . -type f -name ".*" -exec rename -n "s/.\/.//" {} \;

上面的命令(即帶有-n)是一個空運行:

find . ! -path . -type f -name ".*" -exec rename -n "s/.\/.//" {} \;
rename(./.zyz, zyz)
rename(./.abc, abc)
rename(./.Gyr, Gyr)
rename(./.hig123, hig123)

運行它而不-n實際更改文件名:

find . ! -path . -type f -name ".*" -exec rename "s/.\/.//" {} \;
ls -la
total 8   
drwxrwxr-x 2 ron ron 4096 Jul 17 20:59 .
drwxrwxr-x 3 ron ron 4096 Jul 17 20:47 ..
-rw-rw-r-- 1 ron ron    0 Jul 17 20:47 abc
-rw-rw-r-- 1 ron ron    0 Jul 17 20:47 Gyr
-rw-rw-r-- 1 ron ron    0 Jul 17 20:47 hig123
-rw-rw-r-- 1 ron ron    0 Jul 17 20:47 zyz

相關內容