使用bash将文件从已删除文件夹移动到其原始路径时,应检查原始路径中是否存在同名文件。

Moving file from deleted folder to its original path using bash should check for file existence with same name at original path

本问题已经有最佳答案,请猛点这里访问。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/bin/bash
filename=../deleted/$1
#Testing condition before deletion of file
if ["$1" ="" ] ; then
echo"No filename provided"
elif [  -f"../deleted/$1"  ] ; then
echo"File doesnot exist"
str=$(fgrep"$1" ../.restore.info | cut -d":" -f2)
path=${str%/*}
mv"../deleted/$1""${path}"
newname=$(fgrep"$1" ../.restore.info | cut -d"_" -f1)
mv -i"$1""${newname}"
else
echo"file does not exist"
fi
----------

(我已经编写了将文件从已删除文件夹移动到其原始路径的脚本,并且运行良好。但是现在我必须检查是否已经有一个同名的文件,然后它应该通知用户"Do u want to overwrite"(是否要覆盖);如果是,则覆盖;如果否,则覆盖;否则,不还原)


资料来源:http://tldp.org/ldp/bash-初学者指南/html/sect_07_01.html

1
2
3
4
5
6
7
if [[ -e"$newname" ]]; then
   read -p"Overwrite? [y,N]" overwrite

   if [["$overwrite" = [Y,y] ]]; then
      mv -i"$1""${newname}"
   fi
fi

-e标志将简单地检查它是否存在。(您可以像上面所做的那样使用-f或-r来查看它是否存在并且可读。)read命令将在引号之间提示用户文本,并将其存储在变量中。最后一个if仅在输入y或y时移动文件。(我没有包含它,但如果选择no,则可以轻松添加一个else if,表示不移动;如果选择no,则可以添加另一个else,如果在第二个if中选择无效响应,则还可以添加另一个else。)

(不在我的机器前面,所以我不能测试它,但我很确定我的所有语法都是正确的。如果没有,请告诉我。)