【问题标题】:Moving file from deleted folder to its original path using bash should check for file existence with same name at original path [duplicate]使用bash将文件从已删除文件夹移动到其原始路径应检查原始路径中是否存在同名文件[重复]
【发布时间】:2018-03-27 07:13:03
【问题描述】:
#!/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
----------

(我已经编写脚本将文件从已删除的文件夹移动到其原始路径并且工作正常。但是现在我必须检查是否已经存在同名的文件,然后它应该给警告用户“你想要覆盖“如果是则覆盖如果不是或其他任何东西然后不恢复)

【问题讨论】:

标签: bash


【解决方案1】:

来源:http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html

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 表示不移动,如果您在第二个 if 中选择,则还可以添加 else 表示无效响应。)

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-29
    • 2023-04-05
    • 2021-11-09
    • 2011-06-21
    • 1970-01-01
    • 1970-01-01
    • 2010-11-02
    • 2020-08-15
    相关资源
    最近更新 更多