2015-01-09 28 views

回答

1

爲了將文件從大寫重命名爲小寫,可以使用rename命令。在這種情況下,你可以輸入包含庫文件的目錄,然後運行下面的命令來重新命名所有以小寫的文件:


find . -exec readlink -e '{}' \; | xargs rename 'y/A-Z/a-z/' 

讓我知道嘗試這種出後您的反饋意見。

+0

只是爲了澄清這是Larry Wall.s'rename',而不是util-linux'rename'。在這裏討論。 http://oylenshpeegul.typepad.com/blog/2011/12/a-tale-of-two-renames.html – Jasen 2015-01-09 21:38:42

+0

很好的答案。理論上,你不需要'xargs'。 'rename'參數表示文件名可以從標準輸入讀取。 – zerodiff 2015-01-09 21:55:58

+0

這是最簡單的部分。該請求還說「...並更新對它們的所有引用」,這是可以理解的,因爲更改庫包中的文件名可能會導致它中斷。 – rici 2015-01-10 01:18:15

0

這是我想出的解決方案。該腳本基於另一個堆棧溢出回答:How to create a bash script that will lower case all files in the current folder, then search/replace in all files?。我只是將它改爲遍歷整個目錄樹。這難倒我了,而有一兩件事是需要-i選項後提供一個空字符串sed將得到它與Mac OS X的工作:

#!/bin/bash 
find . -type f -name '*.js' -print0 | while IFS= read -r -d '' file; do 
#Check to see if the filename contains any uppercase characters 
    oldfilename=$(basename $file) 
    iscap=`echo $oldfilename | awk '{if ($0 ~ /[[:upper:]]/) print }'` 
    if [[ -n $iscap ]] 
    then 
#If the filename contains upper case characters convert them to lower case 
     newname=`echo $oldfilename | tr '[A-Z]' '[a-z]'` #make lower case 
#Perform various search/replaces on the file name to clean things up 
     newname=$(echo "$newname" | sed 's/---/-/') 
     newname=$(echo "$newname" | sed 's/--/-/') 
     newname=$(echo "$newname" | sed 's/-\./\./') 
     newname=$(echo "$newname" | sed 's/there-s-/theres-/') 
#Rename file 
     newpathandfile=$(dirname $file)/$newname 
     echo "Moving $file\n To $newpathandfile\n\n" 
     mv $file $newpathandfile 
#Update all references to the new filename in all php files 
     find . -type f -name '*.js' -print0 | while IFS= read -r -d '' thisfile; do 
      sed -i '' -e "s/$oldfilename/$newname/g" $thisfile 
      echo "$thisfile s/$oldfilename/$newname/g" 
     done 
    fi 
done 

我改名目錄部分由腳本和部分手動。還有其他類型的文件(特別是網絡字體),我可以使用此腳本進行重命名,但通過指定適當的文件擴展名。

MathJax自定義的最後一步涉及將小寫進入config.root的值。我找不到任何必須將整個MathJax庫轉換爲小寫文件和目錄名的其他人,因此這個問題/答案的一部分對其他人可能沒有多大價值。

我想出的腳本需要一段時間才能運行,但這對我來說不是問題;我不認爲我會再次運行它!

相關問題