2014-04-11 54 views
1

我試圖重命名我的服務器上的文件,以從文件名中刪除特殊字符(空格,等等)。問題是我不能讓重命名功能工作。在我的本地機器上的重命名功能按預期工作重命名服務器上的文件cpanel jailshell

rename 's/[^a-zA-Z\.0-9]*/_/g' *.mp3 

重命名的所有文件,並刪除特殊字符。

但是,在服務器上,上述調用不起任何作用。此外,沒有錯誤信息。沒有人的頁面,可以在服務器上重命名功能,當我嘗試

rename --help 
call: rename from to files... 

...的有益的信息「來自於文件重命名」 ......

有什麼建議?服務器(運行)上的殼是某種jailshell的,在服務器運行的墊腳 - 東西和的cPanel(如果這能幫助)......至於

回答

0

創建一個名爲renamer.sh腳本:

dname=$(dirname "$1") 
bname=$(basename "$1") 
clean=$(tr -dc 'a-zA-Z.0-9' <<< "$bname") 
mv "$1" "$dname/$clean" 

而且使用find

find -type f -name '*.mp3' -exec sh renamer.sh {} \; 
+0

嗨,很好,謝謝:) – jonasfh

+0

但是,如果有人知道我的系統上今天重命名的函數是如何工作的,那該多好啊? – jonasfh

+0

@jonasfh,你想要的Perl腳本稱爲重命名,而不是你已經安裝的二進制文件。檢查了這一點:http://superuser.com/a/302393 – perreal

0

@jonasfh:的cPanel jailshell通常安裝在CentOS主機的頂部。 現在,您可以從redhat util-linux軟件包中查找重命名,這不是您正在嘗試執行的擴展正則表達式的通常perl腳本,只是簡單的redhat重命名。

相關問題