我有大约 1000 个文件夹,我想从中提取单个文件以上传到服务器,但我需要保留目录树。
cp */myFile.txt ../newTree
是我基本上想要做的,但不是每个文件都保存到../newTree/myFile.txt
我希望它是命令../newTree/*/myFile.txt
中*
的通配符的位置cp
。
我在 man 文件中找不到这个标志,所以我想我可能还需要另一个实用程序cp
使用 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
将所有文件存储在tar
存档中,然后将其解压缩到服务器上。