Can I copy *.png
files without change subfolders address and name?
Example:
Copy /photo
to /pic
converting /photo/2017/hello.png
to /pic/2017/hello.png
.
First create the directory you want to copy to:
mkdir -p pic/2017
Then copy over the files. Normally one would just need cp
:
cp photo/2017/*.png pic/2017/
As you mentioned there are too many files and you probably receive an “Argument list too long” error, we’ll use printf
and xargs
to run cp
as often as necessary:
printf "%s\0" photo/2017/*.png | xargs -0 cp -t pic/2017/
You can also use mcp
from the mmv
package in the following way:
mcp -n "photo/2017/*.png" pic/2017/
-n
let’s mcp
only list the changes, remove it to actually perform the copying. Note the quoted asterisk: It’s not evaluated by the shell, but rather by mcp
.
What you want is to copy the directory recursively, so, you should do:
cp -a /photo /pic
This will copy all files and directories recursively and preserves file metadata.
If /photo
has files that are not png
files that you do not want to copy, you can do this after doing the above command:
find /pic -not -iname '*.png' -type f -print0 | xargs --no-run-if-empty -0 rm
rsync
./photo
and/pic
folders?mkdir -p pic/2017/ && cp photo/2017/*.png pic/2017/
.