如何从父目录查找和复制子目录中的文件 linux
how to find and copy files in a sub directory from parent directory linux
我有几个父文件夹,如 GJ1、GJ2 等。每个文件夹包含三个图像,如 GJ11_F.jpg、GJ11_P.jpg。我只需要显示所有 GJ11_F.jpg 文件,包括它们各自的 parent 目录。
find . -type f -name "*_F.jpg" | xargs cp -t ~/home/ubuntu/
但上面的命令只会复制 *_F.jpg 文件而不是它们各自的父目录 GJ1.
xargs 不是我应该尝试的吗?
我也试过了 -
find . -name "*_F.jpg" -exec sh -c 'rsync -a "${0%/*}" ~/home/ubuntu/' {} \;
一种简单的方法是使用 tar
,它将自动处理目录:
find . -type f -name "*_F.jpg" -print0 | tar c --null -T - | tar xC ~/home/ubuntu/
这是一个带有 while
循环的解决方案:
find . -type f -name "*_F.jpg" -print0 |
while IFS= read -r -d '' file; do
mkdir -p ~/home/ubuntu/"$(dirname -- "$file")"
cp -ai -- "$file" ~/home/ubuntu/"$file"
done
我有几个父文件夹,如 GJ1、GJ2 等。每个文件夹包含三个图像,如 GJ11_F.jpg、GJ11_P.jpg。我只需要显示所有 GJ11_F.jpg 文件,包括它们各自的 parent 目录。
find . -type f -name "*_F.jpg" | xargs cp -t ~/home/ubuntu/
但上面的命令只会复制 *_F.jpg 文件而不是它们各自的父目录 GJ1.
xargs 不是我应该尝试的吗?
我也试过了 -
find . -name "*_F.jpg" -exec sh -c 'rsync -a "${0%/*}" ~/home/ubuntu/' {} \;
一种简单的方法是使用 tar
,它将自动处理目录:
find . -type f -name "*_F.jpg" -print0 | tar c --null -T - | tar xC ~/home/ubuntu/
这是一个带有 while
循环的解决方案:
find . -type f -name "*_F.jpg" -print0 |
while IFS= read -r -d '' file; do
mkdir -p ~/home/ubuntu/"$(dirname -- "$file")"
cp -ai -- "$file" ~/home/ubuntu/"$file"
done