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
第一个块有点大,因为文件名较短。
我想在执行 "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
第一个块有点大,因为文件名较短。