2011-07-19 111 views
1

进出口新的UNIX,我也查了很多信息,但仍穿上不是如何让它在bashshell脚本进行排序和基于MV文件的日期

我知道什么是使用这个命令ls -tr|xargs -i ksh -c "mv {} ../tmp/"移动文件逐个文件。

现在我需要制作一个脚本,按系统日期对所有这些文件进行排序,并将它们移动到一个目录中,前1000个最旧的文件将被移动。

实例文件[R这样的

KPK.AWQ07102011.66.6708.01
KPK.AWQ07102011.68.6708.01
KPK.EER07102011.561.8312.13
KPK.WWS07102011.806.3287.13

-----------这是剧本达I HV创建了--- ----

if [ ! -d /app/RAID/Source_Files/test/testfolder ] then  
       echo "test directory does not exist!"  
       mkdir /app/RAID/Source_Files/calvin/testfolder  
       echo "unused_file directory created!"  
fi 

echo "Moving xx oldest files to test directory" 

ls -tr /app/RAID/Source_Files/test/*.Z|head -1000|xargs -i ksh -c "mv {} /app/RAID/Source_Files/test/testfolder/" 

这个脚本的问题是
1)UNIX提示符语法ERRO“如果”
2)移动命令工作,但它创建一个新文件名testfolder代替移动到目录testfolder(testfolder alredy在该路径被创建)

任何人都可以帮我一把吗?谢谢

+0

你是什么意思“按日期排序”?根据日期将它们排序到不同的目录中? –

回答

1

请问这有帮助吗?

mv `ls -tr|head -1000` ../tmp/ 

head -n将前命令(这里是1000个最旧的文件)的n个第一行。反引号允许将lshead命令的结果用作mv的参数。

+0

感谢您的回复..我需要mk它在一个.sh文件..你可以帮我找出是我的脚本错误..谢谢 – user664481

+2

是不是你错过了一个;在第一行? 'if [! -d/app/RAID/Source_Files/test/testfolder];然后' ,我会尝试我的建议,我不知道你为什么需要xargs。 – newenglander