【发布时间】:2016-03-03 17:02:55
【问题描述】:
我正在尝试构建一个 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
【问题讨论】:
-
简单地改变文件的修改时间会导致它被重新索引吗?在每个文件上使用
touch比尝试重命名它们两次要简单得多:find . -wholename '*.docx' -type f -exec touch {} + -
不确定它是否能可靠地修复 Apple/Microsoft 的 Spotlight 错误。我还想保留时间和日期元数据。我认为将扩展名“两次”重命名没有不利之处。速度不是大问题。谢谢。
-
“Mac Shell 没有 BASH 重命名命令”:OS X 上的默认 shell 一直是 bash。在 *nix 上重命名文件始终使用
mv。另外,您可能想查看mdutil命令。