在 Windows 7 上,如何找到所有文件名太长的文件

Jer*_*her 6 windows-7 filenames

Dropbox 告诉我我的许多文件没有同步,因为它们的名称超过了最大字符长度

https://www.dropbox.com/help/145/en

最大字符长度

Windows 只允许 260 个字符或更少的文件和文件夹名称。请注意,Windows 会将文件路径视为名称的一部分,因此像 C:\Users\Panda\My Documents\Dropbox\Creative Nonfiction\My Autobiography\Favorite Things\Favorite Foods\Bamboo\Family Recipes\Fresh Leaves.doc 这样的文件将是 142 个字符,而不是 16 个。如果整个文件路径和名称超过 260 个字符,请缩短名称或将文件或文件夹移至 Dropbox 中的更高级别文件夹。

如何查找文件名和文件夹名大于250个字符的目录下的所有文件?

(注意:该页面上的“检查坏文件”工具也找不到它们。)

更新:到目前为止有两个建议,一个使用 powershell 具有讽刺意味的是,当文件名变得太大时会死掉,另一个使用 cygwin 的 find 和 xargs,这可能有效,但仍在运行(几分钟后)。

我确实解决了我眼前的问题。

在 emacs shell 窗口中,我运行了一个非常简单的 find

$ find . -type f -print >> ../files.log

然后我在 emacs 中打开并输入 m-x list-matching-lines ^ ESC 230 . RETURN

它显示匹配正则表达式的行,这里的正则表达式是该行至少包含 230 个字符,其中 230 只是对可能有问题的行的粗略猜测。这向我展示了两个太长的文件。

对于大约 20,000 个文件,正则表达式过滤器几乎是瞬间完成的。

小智 5

如果您碰巧安装了 cygwin,我认为这应该可行:

find /cygdrive/c/Users/username/Dropbox -type f -print0 | xargs -0 -I {} bash -c 'if [[ $(echo -n "{}" | wc -c) -gt "269" ]]; then echo "{}"; fi'
Run Code Online (Sandbox Code Playgroud)

抱歉,我不知道这样做的本地方式。