【发布时间】:2015-06-21 07:04:27
【问题描述】:
我将嵌套文件夹/图片文件的目录扁平化为单个文件夹。我想将所有嵌套文件移动到根级别。
有 3,381 个文件(计数中不包括目录)。我使用这两个命令计算这个数字并减去目录计数(第二个命令):
find ./ | wc -l
find ./ -type d | wc -l
为了展平,我使用这个命令:
find ./ -mindepth 2 -exec mv -i -v '{}' . \;
问题是,当我在运行 flatten 命令后得到一个计数时,我的计数是 46。在浏览了之前和之后的文件列表之后(我有一个备份),我发现 mv 命令是有时会覆盖文件,即使我使用的是-i。
以下是其中一个文件被覆盖的日志的详细信息...
.//Vacation/CIMG1075.JPG -> ./CIMG1075.JPG
..more log
..more log
..more log
.//dog pics/CIMG1075.JPG -> ./CIMG1075.JPG
所以我可以看到它正在覆盖。我认为-i 应该阻止这种情况。我还尝试了-n 并得到了相同的号码。请注意,我确实有大约 150 个重复的文件名。在我压平所有可能的东西后,我打算手动重命名。
这是时间问题吗? 有办法解决吗?
注意:它提示我某些文件被覆盖。在这些提示上,我只需按Enter 以免覆盖。在上述情况下,没有提示。它只是覆盖。
【问题讨论】:
-
您使用的是什么版本的 OS X?在 OS X 的早期版本(直到并包括 10.6 Snow Leopard)上,存在一些记录在案的重命名的非原子性问题,这可能是一个因素。
-
嗨!谢谢回复。我在优胜美地,版本 10.10.2。
-
最好编写一个脚本来查找重复名称并重命名它们,可能会将路径名嵌入文件中,即
Vacation_CIM...和dog pics_CIM...。由于目录(可能还有文件)名称中有空格,因此您必须忠实地引用所有内容。祝你好运! -
您可以使用
find . -type f | wc -l来计算文件名(不包括目录)。是否有任何文件链接或符号链接?我有一台 Mac,但没有重现您在休闲(84 文件)实验中看到的行为。 -
@JonathanLeffler 感谢您的帮助。这就是我的问题 - 符号链接。 :)