Shell脚本排序&基于日期的mv文件

时间:2011-07-19 10:55:26

标签: unix scripting programming-languages

我是unix的新手,我搜索了很多信息,但仍然不知道如何在bash中制作它

我所知道的是使用此命令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

-----------这是我创建的脚本-------

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提示语法错误'如果' 2)move命令正在运行,但它创建了一个新的文件名testfolder而不是移动到目录testfolder(在此路径中创建了testfolder alredy)

任何人都可以给我一个手?感谢

1 个答案:

答案 0 :(得分:1)

这有用吗?

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

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