在我的外部硬盘中,有大约 1TB 的数据(PDF、纯文本文档、图片、二进制可执行文件等)。数据在 Windows 10 中创建,硬盘驱动器格式为 NTFS。
从硬盘驱动器的根目录开始,我想递归地深入到每个文件夹,并用下划线替换所有文件中的空格,以便更容易从终端使用它们。
我看到了问题这里:并考虑使用那里的最佳答案
rename 'y/ /_/' *
从我的外部硬盘驱动器的根目录。
然而,该帖子的观看次数并不高,并且只有 2 名成员对答案投了赞成票。作为一个新手,我有点担心这是否存在任何固有的问题。有没有更好的方法来处理终端跨平台易用性的问题? (也许像“仅对纯文本文件执行此操作,或我无法预见的其他一些问题”之类的建议)
答案1
我认为这对您有用,但请警惕可能出现的以下问题:
- 您可能会覆盖一些文件(例如:如果您有'一些_文件.txt' 和 '一些文件.txt',第一个将被覆盖(丢失)。
- 该
rename
命令不是递归的。如果您有许多目录和子目录,则需要找到一种方法来执行此操作(脚本或使用 find,如 @centimane 所指出的find ./ -exec rename 'y/ /_/' {} \;
)。 如果您有一些应用程序和 lib 文件,如果无法再找到重命名的文件(例如,保存的 .html 页面也是如此),它们可能会停止工作。
最好先在子目录中尝试该命令并复制一些文件。
obs:抱歉英语。这不是我的母语...