通过sed教程,但无法弄清楚如何使用。
在子文件夹中有100个文件,例如' ABCxxx.ext'需要重命名为' XYZxxx.ext'
其中xxx是不同的alpha数字字符串,而.ext是任何扩展名(xml,java,xls)
我能够使用:
find . -iname "ABC*.*"
在终端中,要查看这些文件,但不确定使用哪个sed或其他命令来重命名文件。在Mac 10.9.4上
实施例: " Abc01k.xls" ==> " Xyz01k.xls" " Abcloans.xml" ==> " Xyzloans.xml" " AbcThreads.java" ==> " XyzThreads.java"
因此,如果文件名中包含Abc字符,请将其替换为Xyz。可以是第一个字符或内部。
阅读:https://www.gnu.org/software/sed/manual/sed.html https://apple.stackexchange.com/questions/131164/how-to-tag-files-with-finder-tags-using-parts-of-a-file-name
最后1个适用于1个文件夹,但我希望它能访问所有文件夹。
bash脚本:
for i in Abc*; do
mv "$i" "${i/Abc/Xyz}"
done
如何为所有子文件夹调用此脚本?或者如何对sed做同样的事情?
答案 0 :(得分:2)
你可以试试这个:
var1=`find . -type f -iname '*ABC*'`
for i in $var1; do mv "$i" "`echo $i | sed 's/ABC/ZXC/g'`"; done
这将重命名子目录中的文件,并更改" ABC"到" ZXC"即使在文件名中间。
答案 1 :(得分:1)
您可以使用此find
命令:
find . -iname "ABC*.*" -exec bash -c 'f="$1"; mv "$f" "${f/Abc/Xyz}"' - {} \;