【发布时间】:2016-02-25 18:16:19
【问题描述】:
root@myhost# ./removedott.sh
Mon Nov 23 10:07:04 EST 2015 - Renaming tester.xml.P.T extension to xml
mv: `tester.xml.P.T' and `tester.xml' are the same file
删除了.sh:
if [[ $(find . -type f -name "*.T" | wc -l) -gt 0 ]]
then
for f in *.T
do
echo "`date` - Renaming $f extension to xml"
y=${f%%.*}
mv -v -- "$f" "${y}.xml"
done
fi
我不知道为什么会出现这个错误,我意识到文件是一样的..这就是全部目的..我只是想重命名它。
【问题讨论】:
-
您的目录中是否已有
tester.xml文件? (此外,find测试可能更好地替换为仅启用nullglob和/或测试*.T作为循环中$f的值。) -
在我做的目录中:触摸 tester.abc.T 然后运行脚本,在第一次通过时它会删除 .abc.T 并将其重命名为 tester.xml。如果我然后 mv tester.xml 到 tester.abc.T 并再次运行脚本,那就是我得到错误的时候
-
如果它已经以您想要的名称存在并且您知道它,为什么要重命名它?我闻到了XY Problem
-
@EtanReisner 如果它已经存在,为什么不直接覆盖?
-
tester.xml和tester.xml.P.T是否可能已经是同一个文件的两个硬链接?运行ls -li并检查每个文件的第一列。如果是同一个数字,他们已经是同一个文件了。