我有一組文件如下:重命名批處理文件在UNIX
- oldname_1.txt
- oldname_1.pdf
- oldname_1.bak
等有不同的擴展名,我需要通過「newname」重命名「oldname」,所以我試過:
rename -v 's/\oldname_*.*$/\newname_*.*/’ oldname_*.*
但這不起作用..
任何建議?
我有一組文件如下:重命名批處理文件在UNIX
等有不同的擴展名,我需要通過「newname」重命名「oldname」,所以我試過:
rename -v 's/\oldname_*.*$/\newname_*.*/’ oldname_*.*
但這不起作用..
任何建議?
首先,你應該明確指出「不起作用」的含義。它什麼都不做?它是否錯誤地重命名它們?它是否將電脈衝發送到解剖部位的某些私處? :-)
在任何情況下,我會先從:
rename -v 's/^oldname/newname/' oldname_*.*
有沒有必要在實際表達通配符的東西,特別是因爲它意味着不同的東西你的想法( xyz_*
意味着後跟零個或多個字符_
xyz
,它不意味着以後內容xyz_
,並.*
是自找麻煩,因爲這意味着零個或多個任意字符)。
文件名的過濾由final參數完成。既然你知道只有與那個參數匹配的文件纔會被重命名,你可以調整你的正則表達式來改變第一個位。
此外,請確保您擁有正確的rename
。有可用的不同rename
到Linux具有不同的語法:
rename oldname newname oldname_*.*
在這些系統中,正則表達式變種通常被稱爲prename
。
最後,原諒什麼可能是一個愚蠢的問題,你肯定這些文件是你期望他們的名字?一個簡單的ls -al oldname*
應該顯示這一點。
順便說一句,這工作正常下我的Debian框:
pax> touch oldname_1.txt oldname_1.pdf oldname_1.bak
pax> ll *name*
-rw-r--r-- 1 pax pax 0 Sep 6 10:56 oldname_1.bak
-rw-r--r-- 1 pax pax 0 Sep 6 10:56 oldname_1.pdf
-rw-r--r-- 1 pax pax 0 Sep 6 10:56 oldname_1.txt
pax> rename -v 's/^oldname/newname/' oldname_*.*
oldname_1.bak renamed as newname_1.bak
oldname_1.pdf renamed as newname_1.pdf
oldname_1.txt renamed as newname_1.txt
pax> ll *name*
-rw-r--r-- 1 pax pax 0 Sep 6 10:56 newname_1.bak
-rw-r--r-- 1 pax pax 0 Sep 6 10:56 newname_1.pdf
-rw-r--r-- 1 pax pax 0 Sep 6 10:56 newname_1.txt
檢查這裏:HTTP://theunixshell.blogspot。 com/2013/01/bulk-renaming-of-files-in-unix.html – Vijay