malalaku 于 2008-10-24 14:45:45发表:
刚开始学习,,,很深奥,,不过还是觉得小河很厚道,,赞一个,符合Linux的开源精神!!
hejie_1207 于 2008-10-24 14:02:21发表:
呵呵,多谢夸奖!我不懂的也很多,大家互相学习吧。:0wmjh(1
wufaqian 于 2008-10-24 13:53:21发表:
小河 真是好同志啊 讲的很好~~~热心人 代表楼主谢谢你
hejie_1207 于 2008-10-24 12:55:58发表:
引用:
原帖由 sydnash 于 2008-10-24 11:46 发表
date=$( ls -l $file | tail -1 | awk '{print $6}' )
刚学shell脚本 这句不是很明白
能讲解下不 谢谢
这条语句运用了“命令替换”。对 Bash(Linux 的默认 Shell)而言,所谓命令替换,就是指系统(即 Shell)首先执行 $() 符号里面的命令,并使用该命令的执行结果替换该命令。在本例中,就是用命令 ls -l $file | tail -1 | awk '{print $6}' 的执行结果来替换该命令,最终把该命令的执行结果赋给 date 变量。
至于 $() 符号内的命令本身,由于 ls 和 tail 是常用命令,所以我只讲一下 awk。在此处,awk '{print $6}' 的作用是把一组字符串中的第 6 个词截取出来。
再看一个例子:
$echo This is a test
This is a test
$echo This is a test | awk '{print $4}'
test
我想讲到这里,大家应该就明白了吧。最后,假设在当前目录下只有一个文件 Filemove,我在下面给出该命令的分解执行情况:
$ls -l Filemove
-rwxrw-r-- 1 He He 281 2008-10-22 21:58 Filemove
$ls -l Filemove | tail -1
-rwxrw-r-- 1 He He 281 2008-10-22 21:58 Filemove
$ls -l Filemove | tail -1 | awk '{print $6}'
2008-10-22
$date=$( ls -l Filemove | tail -1 | awk '{print $6}' )
$echo $date
2008-10-22
值得注意的是,不同的系统上面 ls -l 命令的输出格式并不一定和我这里列举的一样,所以在使用该脚本前,须先检查一下你的系统的 ls -l 命令的输出格式,如果必要的话请对该语句进行相应的修改。另外,我刚刚发现该语句中的 | tail -1 似乎是多余的,可以将其去掉。
[本帖最后由 hejie_1207 于 2008-10-24 13:04 编辑]
sydnash 于 2008-10-24 11:46:15发表:
date=$( ls -l $file | tail -1 | awk '{print $6}' )
刚学shell脚本 这句不是很明白
能讲解下不 谢谢
kofeewoo 于 2008-10-24 11:34:04发表:
谢谢各位了
不是我不有偿,我实在是新手,也没有分值给你们呀,不好意思呀!
奶茶dsk 于 2008-10-23 10:39:57发表:
支持楼上。
hejie_1207 于 2008-10-22 21:41:04发表:
#!/bin/bash
ORIGDIR="/var/UploadFiles"
TARGDIR="/var/ClassifiedFiles"
filelist=$( ls $ORIGDIR/* )
for file in $filelist
do
date=$( ls -l $file | tail -1 | awk '{print $6}' )
if [ ! -e $TARGDIR/$date ]
then
mkdir $TARGDIR/$date
fi
mv $file $TARGDIR/$date
done
使用说明:
1. 变量 ORIGDIR 是上传目录,所有上传的文件都必须放在这个目录下,且该目录不能有子目录。变量 TARGDIR 是分类目录所在的目录,所有分类好的目录和文件都是该目录的子目录。
2. 每一个文件都按其修改日期(如果此文件在上传后未被修改的话,也应该就是其上传日期)放在以其修改日期命名的目录下。例如:位于 $ORIGDIR 目录下修改日期为 2008-09-26 日的文件就被放在 $TARGDIR/2008-09-26 目录下。
附:由于你对脚本的功能不是描述的很详细,所以我只是给你提供了一个简单的框架。如果要实现更复杂的功能,你自己在这个基础上修改。
[本帖最后由 hejie_1207 于 2008-10-22 21:50 编辑]
xtvnet 于 2008-10-22 18:23:30发表:
要是有尝可能会有人吧,呵呵