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"
完成
我需要将一组文件路径复制到其他位置:
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"
完成