我正在嘗試恢復我通過 所做的更改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
為此,您可以使用find
和rename
:
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