使用cp复制文件时保留目录树

Bra*_*yer 4 bash shell terminal cp

我有大约1000个文件夹,我想从中提取单个文件以上传到服务器,但我需要保留目录树.

cp */myFile.txt ../newTree
Run Code Online (Sandbox Code Playgroud)

就是我基本上要保存到做,但每个文件的而不是../newTree/myFile.txt我想这是../newTree/*/myFile.txt*从通配符cp命令.

我在man文件中找不到这个标志,所以我想我可能还需要另外一个实用工具 cp

Arn*_*anc 8

使用rsync:

find ./ -name myFile.txt -print0|rsync -0adv --files-from=- ./ ../newTree/
Run Code Online (Sandbox Code Playgroud)

没有rsync:

您可以为在newTree中创建目录的每个文件找到所有文件,并将文件复制到该文件.

for file in */myFile.txt; do
    dir=$(dirname "$file")
    mkdir -p "../newTree/$dir"
    cp "$file" "../newTree/$dir"
done
Run Code Online (Sandbox Code Playgroud)


tri*_*eee 5

将所有文件存储在tar存档中,然后将其解压到服务器上。