首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有自定义名称的Unix大容量文件副本

带有自定义名称的Unix大容量文件副本
EN

Stack Overflow用户
提问于 2014-01-06 15:27:06
回答 3查看 100关注 0票数 0

在Unix中,我必须将批量文件从一个文件夹复制到另一个文件夹,它们以下面的形式出现。

FILE1 1_547804_550484_2013年-12-19 21.15.32_913.pdf

文件2_518868_616944_2014-01-03 21.10.49_718.pdf

但是,当复制到目标时,希望删除时间部分并按以下方式复制:

FILE1_547804_550484.pdf

FILE2_518868_616944.pdf

我怎样才能做到这一点?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-01-06 15:32:27

代码语言:javascript
复制
dst_dir=~/tmp
f='FILE1_547804_550484_2013-12-19 21.15.32_913.pdf'
cp "$f" "$dst_dir/${f%_*-*-* *.*.*_*.pdf}.pdf"
票数 4
EN

Stack Overflow用户

发布于 2014-01-06 15:38:56

在您的目录下,尝试如下:

代码语言:javascript
复制
ls -1|awk -F_ -v OFS='_' '{o=$0;gsub(/ /,"\\ ",o);NF-=2}$0="cp "o " "$0".pdf"'|sh

举一个例子:(没有显示生成的命令的结束|sh )

代码语言:javascript
复制
 echo 'FILE1_547804_550484_2013-12-19 21.15.32_913.pdf'|awk -F_ -v OFS='_' '{o=$0;gsub(/ /,"\\ ",o);NF-=2}$0="cp "o " "$0".pdf"'                                      
cp FILE1_547804_550484_2013-12-19\ 21.15.32_913.pdf FILE1_547804_550484.pdf

您可以按需要添加targetDir部件。这行没有修改,将cp到您的同一个目录。

票数 1
EN

Stack Overflow用户

发布于 2014-01-06 15:42:32

您可以使用sed编辑文件名,也可能只使用shell特性。下面是一个使用sed的示例

代码语言:javascript
复制
for i in *.pdf;
do
    n=$(echo "${i}" | sed 's/^\(.\+\)\(\(_.\+\)\{2\}\)\(_.\+\)\{2\}\.pdf$/\1\2.pdf/');
    mv "${i}" "destination/${n}"
done
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20953243

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档