如何移动文件并查看进度(例如使用进度条)?

如何移动文件并查看进度(例如使用进度条)?

使用 移动大型目录时mv,有没有办法查看进度(%)?cpgentoo 上的命令有一个显示-g进度的开关。

答案1

有一个名为的新工具progress可以找到与正在运行的命令相关的任何描述符并显示进度和速度: 可以在这里找到

progress -w

输出所有正在运行的 cp、mv 等操作的统计信息

答案2

当有更简单的解决方案时,我不喜欢从 coreutil 覆盖二进制文件的想法,所以这是我的:

同步:rsync复制文件并有-P进度条开关。因此,如果您安装了 rsync,则可以在 shell 点文件中使用一个简单的别名:

alias cp='rsync -aP'

缺点是,rsync 比 cp 慢一点,但你应该用时间来衡量这一点并自行决定,我可以忍受:-)

外壳脚本:shell脚本也可以创建进度条。我不久前在网上发现了这个,我不记得出处了:

#!/bin/sh
cp_p()
{
   strace -q -ewrite cp -- "${1}" "${2}" 2>&1 \
      | awk '{
        count += $NF
            if (count % 10 == 0) {
               percent = count / total_size * 100
               printf "%3d%% [", percent
               for (i=0;i<=percent;i++)
                  printf "="
               printf ">"
               for (i=percent;i<100;i++)
                  printf " "
               printf "]\r"
            }
         }
         END { print "" }' total_size=$(stat -c '%s' "${1}") count=0
}

这看起来像:

% cp_p /home/echox/foo.dat /home/echox/bar.dat
66% [===============================>                      ]

酒吧:

'bar' - 带有 ASCII 进度条的 'cat'

bar是一个小 shell 脚本,用于显示所有类型操作(cp、tar 等)的进程栏。您可以在以下位置找到示例项目主页。

它也是为 bourne shell 编写的,因此它可以在附近的任何地方运行。

答案3

您可以构建一个修补的 cp 和 mv,然后它们都支持 -g 开关来显示进度。有说明和补丁这一页然而:页面会指导您进行操作

$ sudo cp src/cp /usr/bin/cp
$ sudo cp src/mv /usr/bin/mv

覆盖原来的cp和mv。这有两个缺点:首先,如果更新的 coreutils 软件包到达您的系统,它们将被覆盖。其次,如果修补版本有问题,他们可能会破坏依赖标准 cp 和 mv 的脚本。我宁愿做这样的事情:

$ sudo cp src/cp /usr/local/bin/cpg
$ sudo cp src/mv /usr/local/bin/mvg

它将文件复制到 /usr/local/bin ,用于用户编译的程序,并给它们一个不同的名称。所以当你想要一个进度条时,你mvg -g bigfile /mnt/backup通常会说并使用 mv 。

您也可以alias mvg="/usr/local/mvg -g"这样做,您只需要说出mvg bigfile /mnt/backup并直接获取进度条。

答案4

如果您的目标是移动/复制带有进度条的目录,但避免非终端 GUI,mc(Midnight Commander)是一个不错的选择。

相关内容