2015-01-09 46 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库转换为小写文件和目录名的其他人,因此这个问题/答案的一部分对其他人可能没有多大价值。

我想出的脚本需要一段时间才能运行,但这对我来说不是问题;我不认为我会再次运行它!

相关问题