$ cat a1.sh
#!/bin/bash
for file in /home/user/tmp/*
do
echo $file
done
2)假设目录/home/user/tmp/下面的所有的文件和(子)目录如下:
$ ls
1.txt 2.txt a1.sh a.sh b.sh email_back m1.doc tmp
3)运行脚本:
$ a1.sh (或者./a1.sh)
/home/user/tmp/1.txt
/home/user/tmp/2.txt
/home/user/tmp/a1.sh
/home/user/tmp/a.sh
/home/user/tmp/b.sh
/home/user/tmp/email_back
/home/user/tmp/m1.doc
/home/user/tmp/tmp
4)脚本a1.sh的作用只是显示文件和子目录的列表,要显示文件的内容,脚本继续改造,内容如下,看脚本a2.sh:
$ cat a2.sh
#!/bin/bash
for file in /home/shiqingd/tmp/*
do
echo $file
if [ -f $file ]then
cat $file
fi
done
脚本a2.sh可以达到目的。
#!/bin/bashfor file in ./*
do
if test -f $file
then
name=`basename $file`
first_line=`sed '1!d' $file`
if [ "$first_line" == "#!/bin/bash" ]
then
echo $name
fi
fi
done
我解释下代码,首先,在for循环中遍历当前目录下的所有文件,然后外层的if判断当前文件类型,如果是文件,则使用basename $file用来获取当前文件的文件名(包括拓展名)并赋值给变量name中,然后使用sed '1!d' $file获取文件第一行的内容并赋值给变量first_line,再在内层的if中判断第一行的内容是否是“#!\bin\bash”,如果是,则打印该文件的文件名。
ps:我也是刚学shell,写了半天才整出来,就当是自己也顺便练手了,哈哈。
我在我电脑上测试了下,没有问题,如果你还有问题请追问。
如果你的文件只是生成不会修改的话,可以这样:find * -mmin -15 2>/dev/null
如果可能修改,则需要这样(先创建一个 15 分之前的时间戳的文件,然后找比这个文件新的文件):
touch -t $(date -d "15 min ago" +%Y%m%d%H%M) temp.tmp
find * -newer temp.tmp 2>/dev/null
rm -rf temp.tmp
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)