bash 从原始文件的提取路径复制文件

bash copy files at extract path from original

我需要将一组文件路径复制到其他位置:

find . -name '*.txt': 
/a/b/c/d/e/f/filea.txt
/a/b/c/d/e/g/h/fileb.txt
/a/b/c/d/e/k/l/filec.txt

我想将每个文件复制到包含 e 和之后的路径,例如:

cp /a/b/c/d/e/f/filea.txt e/f/

e路径永远存在。 我需要先找到所有文件。 如何从路径中查找、提取e之后的所有内容并同时复制?

通过管道 find 输出

sed 's|\(.*\)\(\*\*e\*\*.*/\)\(.*\)|cp  |' 

如果结果看起来没问题,将 sed 输出通过管道传输到 sh。如果 **e** 只是指 e,则模式为

 sed 's|\(.*\)\(e.*/\)\(.*\)|cp  |' 

你可以使用类似这样的东西。如果生成的 mkdir 和 cp 命令看起来没问题,您可以删除它们之前的 echo。

SOURCE="/a/b/c/d"
CD $SOURCE
目的地="full/path/to/whatever"

在 $(find . -name '*.txt') 中查找文件;做

DIR=$(dirname $FILE)  
# create the intermediate directories if they don't exist  

echo "mkdir -p $DESTINATION/$DIR"  

echo "cp $FILE $DESTINATION/$DIR"  

完成