Shell 显示从一个目录复制到另一个目录的文件数的脚本

Shell script to display the number of files which are copying from one directory to another

我想在执行 "CP" 命令时显示从一个目录复制到另一个目录的文件数。添加到它的命令是什么。

根据 cp 手册页,有 -v 参数,它显示了正在执行的操作。这可以按照以下简单示例进行处理:

cp -v的正常用法:

Prompt$ cp -v .bash_history /dev/null
'.bash_history' -> '/dev/null'

现在,经过一些处理(计数):

Prompt$ cp -v .bash_history /dev/null | wc -l
1

试试这个:

$ mkdir a b
$ touch a/{1,2,3}
$ ls a
1  2  3
$ find a -type f -exec sh -c 'echo $# ; cp "$@" b/.' sh {} + 
3
$ ls b
1  2  3

如果文件数超过最大参数长度,该命令打印每个块复制的文件数:

$ touch a/{0..99999}
$ find a -type f -exec sh -c 'echo $# ; cp "$@" b/.' sh {} + 
17768
16380
16380
16380
16380
16380
332
$ find b -type f | wc -l
100000

第一个块有点大,因为文件名较短。