4

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

cp */myFile.txt ../newTree

是我基本上想要做的,但不是每个文件都保存到../newTree/myFile.txt我希望它是命令../newTree/*/myFile.txt*的通配符的位置cp

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

4

2 回答 2

8

使用 rsync:

find ./ -name myFile.txt -print0|rsync -0adv --files-from=- ./ ../newTree/

没有 rsync:

您可以找到所有文件,对于您在 newTree 中创建目录的每个文件,并将文件复制到其中。

for file in */myFile.txt; do
    dir=$(dirname "$file")
    mkdir -p "../newTree/$dir"
    cp "$file" "../newTree/$dir"
done
于 2011-08-23T16:07:57.020 回答
4

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

于 2011-08-23T16:10:13.067 回答