linux - bash 从原始文件中提取路径复制文件

标签 linux bash sed grep find

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

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 \1\2\3 \2|' 

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

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

关于linux - bash 从原始文件中提取路径复制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31341382/

相关文章:

linux - 在 Linux 中将多个 JPG 合并为单个 PDF

c - linux/ext2_fs.h 有什么问题?我已经包含了 <linux/fs.h>

php gethostbyname() 函数在 Linux 中不起作用

linux - Cron 每分钟运行一次(在 bash 中运行但不在 cron 中运行)

awk - 使用 grep 或 awk 搜索列并存储在变量中

linux - 如何使用sed将字符串替换为数字?

perl -pe one liner : Replace all matched characters with same number of a different character. 非全局

c++ - 类中的段错误

ImageMagick 裁剪巨大的图像

linux - Bash 触发 wget 命令,不等待响应,继续执行下一个命令