当目标文件被源文件覆盖时,是否有任何“超级” mv 命令可以显示文件信息(大小、日期等)?这是指当移动文件时,两个文件碰巧具有相同的名称。
发生这种情况时,我需要首先取消“mv”命令,“ls”目标文件夹,查看文件大小、时间戳等,然后将其与源文件进行比较,看看我要保留哪一个,如果我想覆盖,则恢复 mv 操作,否则只需“rm”源操作。
如果能获得与 X 会话或 Windows 下发生的情况类似的行为,那就太好了,这样就可以在不取消正在进行的命令的情况下做出决定。
答案1
使用一个非常简单的脚本包装器,例如smv
(用于“超级移动”)。
该脚本恰好接受 2 个参数,就像 cmd 那样mv
。确保它是可执行的,例如使用chmod 751 smv
,并确保与其位置对应的路径位于 yrPATH
变量中。
#!/usr/bin/bash
if ! [ $# -eq 2 ]; then
printf "%s\n" "Usage: Include exactly 2 fully qualified file names as arguments, as in:" \
" $ smv /path/to/source /path/to/destination" "Abort."
elif [ -e "$2" ]; then
(printf "\n%s\n\n" "Destination file exists." && /usr/bin/stat "$2" ) 2>&1
printf "\n"
read -p "Clobber it ? (Y/n): " answer
case "$answer" in
N|n) echo "$1 not moved; $2 preserved. Abort."; exit(11) ;;
Y|y) \mv -f "$1" "$2" ;;
esac
else
printf "\n%s\n" "Destination file does not exist."
\mv -i "$1" "$2"
printf "%s\n" "$1 was moved to $2."
fi
华泰
答案2
-i
或选项--interactive
使其mv
在覆盖之前进行提示。然后,您可以轻松地将文件名复制到另一个终端并在那里查看其元数据。