我正在尝试构建一个shell命令(在Mac OSX El Capitan上)以递归方式重命名我的所有DOCX文件以使其具有扩展名ZZZZ,然后立即将它们重新命名为DOCX扩展名。这是一个解决方法,希望如下修复问题:
我这样做是为了试图解决Mac Spotlight错误,该错误无法正确搜索Mac Word 2011文件中的内容。它给出了间歇性的结果,似乎错过了很多点击(这个问题似乎在Apple Mac论坛上已经有几年了。)重命名文件似乎可以启动Spotlight。
Mac Shell没有BASH Rename命令,因此我尝试迭代使用“MV”命令。我已经使用以下代码取得了部分成功,但不知道如何将它们绑在一起......
cd ~/Documents/TESTING/
# FINDS MY DOCX'S RECURSIVELY IN TOP-LEVEL FOLDER AND IT'S SUBFOLDERS. NOT SURE OF SYNTAX TO USE FOR "MV" COMMAND TO RENAME DOCX FILES
# find . -wholename '*.docx' -type f -exec mv UNSURE1HERE UNSURE2HERE \;
# WORKS BUT ONLY IN TOP-LEVEL FOLDER - I NEED IT TO WORK RECURSIVELY ON DOCX'S IN TOP-LEVEL FOLDER AND IT'S SUBFOLDERS:
# for files in *.docx; do mv "$files" "${files%.docx}.zzzz"; done
答案 0 :(得分:1)
您可以使用process substitution执行此操作:
#!/bin/bash
cd ~/Documents/TESTING/
while IFS= read -r -d '' file; do
echo mv -- "$file" "${file%.*}.zzzzz"
done < <(find . -iname '*.docx' -type f -print0)
如果您对输出感到满意,请在echo
mv
从.zzzz
到.docx
:
while IFS= read -r -d '' file; do
echo mv -- "$file" "${file%.*}.docx"
done < <(find . -iname '*.zzzz' -type f -print0)