我需要将当前目录中的每个*.lis文件移动到一个新目录中,并添加到该文件的现有文件名中,以便应用程序使用新名称拾取该文件。
例如:
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我在我的脚本中开始做的事情:
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文件名,然后移动每个文件名。
发布于 2015-12-10 17:25:00
您需要一个循环,以便一次可以执行一个文件。
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手册页。"&&“习惯用法是为了仅在第一个存档文件的副本有效的情况下将该文件映射到第二个存档名称。
发布于 2015-12-11 06:04:03
@Abe Crabtree,感谢你为我指明了正确的方向。下面是工作的最终代码。
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
donehttps://stackoverflow.com/questions/34190236
复制相似问题