如何检查目录中每个子目录是否具有唯一的名称

如何检查目录中每个子目录是否具有唯一的名称

我有一个文件夹,里面有子目录和文件。我想确保没有两个目录同名。该怎么做?

答案1

此命令将打印多次出现的目录名称:

find path/to/dir -type d -printf "%f\n" | sort | uniq -d

如果输出为空,则表示没有重复的名称。如果输出不为空,则可以使用以下命令找到重复项的完整路径:

find path/to/dir -type d -name the-name

警告:由于\n选项中使用了文件名分隔符,如果您在其中嵌入了-printf一些目录,则此方法将不起作用。希望这是一个可以接受的限制。\n

选项在 GNU 实现中-printf可用find,在 Linux 系统上很常见,在 BSD 实现中可能不可用,在 BSD 系统上很常见。如果您find没有该选项,那么您可以改用这个:

find path/to/dir -type d | awk -F/ '{ print $NF }' | sort | uniq -d

相关内容