我需要将一组文件路径复制到其他位置:
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 之后的所有内容并同时复制?
答案 0 :(得分:1)
通过
管道find
输出
sed 's|\(.*\)\(\*\*e\*\*.*/\)\(.*\)|cp \1\2\3 \2|'
如果结果看起来没问题,请通过sh
管道sed输出。如果**e**
仅表示e
,则模式为
sed 's|\(.*\)\(e.*/\)\(.*\)|cp \1\2\3 \2|'
答案 1 :(得分:0)
你可以使用这样的东西。如果生成的mkdir和cp命令看起来没问题,则可以在它们之前删除回显。
SOURCE = “/ A / B / C / d”
cd $ SOURCE
DESTINATION =“full / path / to / whatever”
DIR=$(dirname $FILE)
# create the intermediate directories if they don't exist
echo "mkdir -p $DESTINATION/$DIR"
echo "cp $FILE $DESTINATION/$DIR"
完成