bash`mv -n`检测是否覆盖

时间:2014-07-09 19:40:34

标签: bash shell unix

我试过搜索但找不到类似的问题。如果这是重复的,请告诉我,我很乐意将其删除。

我有一个脚本用于重命名循环内的文件,运行:

mv -vn "$file" $newname
if [ $? -eq 0 ]
then
    *do something*
fi

我可以在屏幕-v上看到xxx not overwritten,但我正在尝试检测脚本是否由于已存在同名文件而未重命名文件。

mv实用程序在成功时退出0,无论文件是否重命名都是如此。

任何指针?

1 个答案:

答案 0 :(得分:1)

您可以检查文件是否存在,如果不重命名:

test -e $newname || mv $file $newname

如果你需要消息说xxx没有被覆盖:

test -e $newname && echo "$newname not overwritten" || mv $file $newname