2014-01-27 22 views
0

我有几个文件和不同的目录,我是相当积极的,他们已重命名这些其他目录与大写字母文件夹重复命名的文件。的Bash shell脚本 - 了解不同的目录

我希望能够在不同的目录中找到那些重复命名的文件和文件夹,并对它们进行排序,以便我可以查看并在之后跟踪它们。

喜欢的东西:

C:\Program Files\hello.txt 

C:\WhateverFolder\heLlo.txt 

这将是该计划或类似的东西输出。

你们认为这是可能的吗?

+2

这可以帮助... http://stackoverflow.com/questions/20248082/binary-compare-all-files-against-all-files-in-a-specified-directory-and-subdire/ 20248223#20248223 –

+0

不幸的是,它并没有帮助我,对不起:/要么我是太多的“noob”,要么我无法做到这一点 – Gabriel

回答

1
find /directory | awk '{names[gensub(".*/","","g")]++} END { for (name in names) { if (names[name] > 1) { print name } } }' 

可能会给你一个重复名称(文件和文件夹)的列表。这给了你一个起点。

上述假设gawk,所以这里是它甚至还支持大小写混合的文件名更广泛的解决方案,荣誉给mklement0为理念:

find /directory | awk -F '/' '{names[tolower($NF)]++} END { for (name in names) { if (names[name]>1) { print name }}}' 
+0

好吧,也许你现在可以解决这个问题:它说“ awk“不存在。我将如何让它存在? – Gabriel

+0

@Gabriel:假设你在Windows上(你的示例路径提示),你需要一个Unix兼容层,例如[MSYS](http://www.mingw.org/wiki/MSYS) – mklement0

+0

@Zsolt:美丽的' akw'ery,但是(a)最后缺少'}}',(b)你假设'gawk';应该在更多平台上工作的命令变体是:find/directory | awk -F'/''{names [$ NF] ++} END {for(name in name){if(names [name]> 1){print name}}}'' – mklement0

0

如果在Unix-Y命令你太多,你可以得到这样的列表并自行排除它可能吗?

DIR /B /S /L somefolder