Linux 仅当shell脚本中存在文件时才移动

Linux 仅当shell脚本中存在文件时才移动,linux,sh,mv,Linux,Sh,Mv,作为备份脚本的一部分,我想对文件调用mv,以对其进行重命名: mv example.txt example2.txt 如果文件不存在,我将收到错误: mv: cannot stat ‘example.txt’: No such file or directory 仅当文件已存在时,如何调用mv 我真的不想将stderr重定向到dev/null,因为我很想保留发生的任何其他错误。您应该测试该文件是否存在 if [ -f blah ]; then mv blah destination f

作为备份脚本的一部分,我想对文件调用
mv
,以对其进行重命名:

mv example.txt example2.txt
如果文件不存在,我将收到错误:

mv: cannot stat ‘example.txt’: No such file or directory
仅当文件已存在时,如何调用mv


我真的不想将stderr重定向到
dev/null
,因为我很想保留发生的任何其他错误。

您应该测试该文件是否存在

if [ -f blah ]; then
   mv blah destination
fi
一艘班轮:

[ -f old ] && mv old nu

即使找不到文件,此单行程序也会成功返回:

[ ! -f src ] || mv src dest

请同时发布代码中的相关部分哦,这还不够,无论如何,我猜我的解决方案应该适合你。请测试一下。@Oz123您还想要什么?谢谢,我当然会的。@Oz123要学究,需要使用
[-r blah]
,以获得额外的签入只读权限-r对我有效,即使问题是文件根本不在那里。@SergA,在这种特殊情况下,不会
[-w blah]
更合适,因为
mv
需要文件的写入权限?@ghilesZ,实际上不需要检查文件的写入和读取权限。要移动文件,您需要有权限将其从以前所在的目录中分离出来,并将其附加到要放置文件的目录中。从中获取。对于目录,请使用
[-d myDir]
(@mahemoff的版本在未找到文件时返回false。)这是更性感的答案