Могу ли я скопировать файлы *. Png
без изменения адреса и имени вложенных папок?
Пример:
Скопируйте / photo
в / pic
] преобразование /photo/2017/hello.png
в /pic/2017/hello.png
.
Сначала создайте каталог, в который вы хотите скопировать:
mkdir -p pic/2017
Затем скопируйте файлы. Обычно достаточно просто cp
:
cp photo/2017/*.png pic/2017/
. Как вы упомянули, слишком много файлов, и вы, вероятно, получите ошибку «Список аргументов слишком длинный», мы будем использовать printf
и xargs
для запуска cp
так часто, как это необходимо:
printf "%s\0" photo/2017/*.png | xargs -0 cp -t pic/2017/
Вы также можете использовать mcp
из пакета mmv
следующим образом: [ 1119]
mcp -n "photo/2017/*.png" pic/2017/
-n
давайте mcp
только перечислим изменения, удалим их, чтобы фактически выполнить копирование. Обратите внимание на звездочку , процитированную : она не оценивается оболочкой, а скорее mcp
.
То, что вы хотите, это скопировать каталог рекурсивно. Так что сделайте:
cp -a /photo /pic
Это рекурсивно скопирует все файлы и каталоги и сохранит метаданные файла.
Если /photo
содержит файлы, которые не являются png
файлами, которые вы не хотите копировать, вы можете сделать это после выполнения вышеуказанной команды:
find /pic -not -iname '*.png' -type f -print0 | xargs --no-run-if-empty -0 rm