【发布时间】:2011-11-01 06:38:45
【问题描述】:
我正在尝试编写一个 bash 脚本,该脚本将递归搜索目录,查找名称相同但大小写不同的文件,然后重命名它们。
例如,包含 file.txt 和 File.txt 的目录,file.txt 将保留,而 File.txt 将是 File.0(或任何数字,只要两个副本都保留。)
这是我的代码,虽然我看到了问题。扫描重复名称的行正在更改文件路径中的大小写,使它们无效。如果不删除路径中的大小写,我想不出一种方法来检测重复项。
#!/bin/bash
#Scan for duplicates
find $1 -name "*"| tr 'A-Z' 'a-z' | sort | uniq -d > ~/case.tmp
#Count changes
i=0
#Make changes
for line in `cat ~/case.tmp`
do mv $line $line.$i
let i++
done
#Print Results
echo "$i file(s) renamed".
感谢您的帮助。
【问题讨论】:
标签: bash case rename case-sensitive