首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将文件从一个目录移动到另一个目录,并添加到新目录中的每个文件名

将文件从一个目录移动到另一个目录,并添加到新目录中的每个文件名
EN

Stack Overflow用户
提问于 2015-12-10 06:29:25
回答 2查看 47关注 0票数 0

我需要将当前目录中的每个*.lis文件移动到一个新目录中,并添加到该文件的现有文件名中,以便应用程序使用新名称拾取该文件。

例如:

代码语言:javascript
复制
Move /u01/vista/vmfiles/CompressGens.lis and /u01/vista/vmfiles/DeleteOnline.lis
to 
/u01/vista/Migration_Logs/LIS.BHM.P.MIGRATION_LOGS.FBA."$(date '+%m%d%y%H%M%S')"CompressGens.lis
and
/u01/vista/Migration_Logs/LIS.BHM.P.MIGRATION_LOGS.FBA."$(date '+%m%d%y%H%M%S')"DeleteOnline.lis

我在我的脚本中开始做的事情:

代码语言:javascript
复制
cp -f /u01/vista/vmfiles/*.lis /u01/vista/Migration_Logs/LIS.BHM.P.MIGRATION_LOGS.FBA."$(date '+%m%d%y%H%M%S')"*.lis

/u01/vista/vmfiles/目录中有多个文件,根据系统和日期的不同,*.lis文件并不总是相同的。有时是"DeleteOnline.lis“和CompressGens.lis,而不是ArchiveGens.lis。然后第二天就是CompressGens.lis和ArchiveGens.lis了。

因此,我需要获取/u01/vista/vmfiles/目录中的*.lis文件名,然后移动每个文件名。

EN

回答 2

Stack Overflow用户

发布于 2015-12-10 17:25:00

您需要一个循环,以便一次可以执行一个文件。

代码语言:javascript
复制
ls -1tr *.lis | while read File
do
    cp -p $File ../Migration_Logs/${File%.lis}.$(date '+%m%d%y%H%M%S').CompressGens.lis &&
    mv $File ../Migration_Logs/${File%.lis}.$(date '+%m%d%y%H%M%S').DeleteOnline.lis
done

${File%.lis}是剥离后缀的bash/korn方法-请参阅ksh或bash手册页。"&&“习惯用法是为了仅在第一个存档文件的副本有效的情况下将该文件映射到第二个存档名称。

票数 1
EN

Stack Overflow用户

发布于 2015-12-11 06:04:03

@Abe Crabtree,感谢你为我指明了正确的方向。下面是工作的最终代码。

代码语言:javascript
复制
ls -1tr *.lis | while read File
do
    mv $File /u01/vista/Migration_Logs/LIS.BHM.P.MIGRATION_LOGS.FBA.$(date '+%m%d%y%H%M%S').${File%.lis}.lis
done
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34190236

复制
相关文章

相似问题

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