我需要一个 unix 命令来执行以下操作:
目录结构
/project
/images
/products
/cup.jpg
/laptop.jpg
/designs
/alpha.jpg
/beta.jpg
/gamma.jpg
/team
/jeff.jpg
/locations
/new-york.jpg
Run Code Online (Sandbox Code Playgroud)
我想要一个命令将所有文件*而不是文件夹从“图像”目录递归复制到这样的东西。
/assets
/cup.jpg
/laptop.jpg
/alpha.jpg
/beta.jpg
/gamma.jpg
/jeff.jpg
/new-york.jpg
Run Code Online (Sandbox Code Playgroud)
我试过了,但它只是递归地复制了文件夹 cp -r ./project/images/* ./assets/
这会为每个文件执行 cp,因此如果有很多小文件(但不是典型图像),它会明显变慢:
find project -name \*.jpg -exec cp {} assets \;
Run Code Online (Sandbox Code Playgroud)
这一次需要多个参数:
find project -name \*.jpg -print0 | xargs -0 -I% cp % assets
Run Code Online (Sandbox Code Playgroud)
如果没有包含单引号或双引号的 -0 文件名将导致类似xargs: unterminated quote
.
击4个支持**
有shopt -s globstar
:
cp project/**/*.jpg assets
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
957 次 |
最近记录: |