Скрипт оболочки для отображения количества файлов, которые копируются из одного каталога в другой - PullRequest
0 голосов
/ 05 марта 2020

Я хочу отобразить количество файлов, которые копируются из одного каталога в другой при выполнении команды «CP». что может быть команда, чтобы добавить к нему.

Ответы [ 2 ]

1 голос
/ 05 марта 2020

Согласно cp man-страницам, есть параметр -v, который показывает, что делается. Это может быть обработано, как в следующем простом примере:

Нормальное использование cp -v:

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

Теперь с некоторой обработкой (подсчетом):

Prompt$ cp -v .bash_history /dev/null | wc -l
1
0 голосов
/ 05 марта 2020

Попробуйте это:

$ 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

Первый блок немного больше, потому что имена файлов короче.

...