使用bash将文件从已删除文件夹移动到其原始路径应检查原始路径中是不是存在同名文件[重复]

Posted

技术标签:

【中文标题】使用bash将文件从已删除文件夹移动到其原始路径应检查原始路径中是不是存在同名文件[重复]【英文标题】: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
----------

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

【问题讨论】:

问题已在问题***.com/questions/638975/… 和***.com/questions/226703/… 中回答 【参考方案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 表示无效响应。)

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

【讨论】:

以上是关于使用bash将文件从已删除文件夹移动到其原始路径应检查原始路径中是不是存在同名文件[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何根据文件名自动创建文件夹并使用 .BAT 将文件移动到其文件夹中

如何从 Bash 中的路径字符串中删除文件后缀和路径部分?

linux中Shell历史命令记录文件的路径是啥

从子字符串结果中删除可能的尾随空格

replaceItemAtURL: 方法在某些情况下无法删除原始移动文件

在linux里输入su命令,输入密码后提示bash:…………(一个地址)找不到文件,是怎么回事?