我从互联网档案馆的一个网站上下载了所有文件。现在我有一个目录,其中包含 1000 多个按存档日期标记的子目录。每个子目录都包含一些文件。
- 我想将子目录中的这些文件全部移动到一个目录中,但是其中一些文件具有相同的名称(因为它们是同一文件在不同时间点的不同版本)。
- 我想仅当文件是重复的文件名时才将其来源目录的名称附加到文件名中(而不是覆盖新目录中的文件)。
有没有办法做到这一点?
我从互联网档案馆的一个网站上下载了所有文件。现在我有一个目录,其中包含 1000 多个按存档日期标记的子目录。每个子目录都包含一些文件。
有没有办法做到这一点?
听起来你更愿意在多个目录中找到带有该后缀的文件时重命名它们。也许是这样的:
请注意,
$target
如果它一开始不是空的,那么它一定不是这些子目录之一,否则您需要调整模式<*/*>
以确保它排除其文件。<{,..?,.[!.]}*/{,..?,.[!.]}*>
还请注意,隐藏文件被排除在外。如果您需要它们,您可以将模式更改为。使用
mv
的--backup
选项,如 中所述man mv
,并且,对于“数千个”目录/文件,使用find
和xargs
。类似于(未经测试):然后,要删除现在为空的目录,利用
rmdir
拒绝删除非空目录的功能,执行以下操作(未经测试):