我需要一个unix命令来执行以下任务:
目录结构
/project
/images
/products
/cup.jpg
/laptop.jpg
/designs
/alpha.jpg
/beta.jpg
/gamma.jpg
/team
/jeff.jpg
/locations
/new-york.jpg
我想要一个命令来将所有文件*而不是文件夹从“图像”目录中递归地复制到类似这样的内容。
/assets
/cup.jpg
/laptop.jpg
/alpha.jpg
/beta.jpg
/gamma.jpg
/jeff.jpg
/new-york.jpg
我试过这个但它只是递归复制文件夹cp -r ./project/images/* ./assets/
答案1
这将对每个文件执行 cp,因此如果有很多小文件(但典型图像则不会),速度可能会明显变慢:
find project -name \*.jpg -exec cp {} assets \;
每次需要多个参数:
find project -name \*.jpg -print0 | xargs -0 -I% cp % assets
如果没有 -0,包含单引号或双引号的文件名将导致类似错误xargs: unterminated quote
。
Bash 4支持:**
shopt -s globstar
cp project/**/*.jpg assets