mv :从要覆盖的文件中获取信息

mv :从要覆盖的文件中获取信息

当目标文件被源文件覆盖时,是否有任何“超级” 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在覆盖之前进行提示。然后,您可以轻松地将文件名复制到另一个终端并在那里查看其元数据。

相关内容