Shell脚本01 —— 遍历指定目录,找到指定文件
2015-02-04 17:18
971 查看
#!/bin/sh cd ~/Documents/workspace function checkDir(){ for file in `ls $1` do if [ -f $1"/"$file ] then if [ $file = "R.java" ] then echo $1"/"$file while read LINE do if [ ${#LINE} = 55 ] then echo $LINE fi done < $1"/"$file fi elif [ -d $1"/"$file ] then checkDir $1"/"$file else echo "wrong" fi done } checkDir .
作为一个程序员,居然不会写脚本,太不给力了。
今天折腾了两个小时,写了一个无比简单的脚本。开启我的写脚本之旅。
今天遇到的问题:
1. 一开始调用方法的时候使用的是
checkDir ./*
checkDir方法中使用:
dir=$1
for file in $dir
...
我想要的效果是,循环指定目录下所有的文件(包括目录)
但是实际运行出来发现,这个写法,只能取一个值。其余的都不循环了。
于是目录还是改成
checkDir .
方法中直接使用ls
for file in `ls $1`
2. 递归目录
一开始在循环中,进入下一层目录,然后列举当前目录
cd $file
checkDir .
但是发现进了一层目录之后回不来了
于是不要进目录,而是直接检查就可以了
checkDir $file
3. 可以递归目录了,但是判断-f、-d失败
echo出来的文件名也是对的,但是就是判断-f、-d一直是false。
百般折腾,最后发现,确实不是文件啊,文件是要指定目录的。
于是用到文件的地方,都改成
$1"/"$file
这样就把上层目录和当前文件名拼起来,凑成了一个完整的路径。-f、-d也能成功判断了。
4. 由于使用 $1"/"$file 拼路径的地方还挺多,于是想着是不是可以把这个路径赋值给一个变量,以后都用这个变量
filepath=$1"/"$file
if [ -f filepath ]
...
但是不知为何,反而不可以了。。。算了,不折腾了,今天有点累了。。。
参考资料:
30分钟玩转Shell脚本编程
Linux通过shell实现递归列目录及对文件的处理
相关文章推荐
- Ruby和SHELL中如何遍历指定目录的文件 推荐
- Linux shell编程 5 ---- 利用shell脚本遍历某个目录下的所有文件
- shell脚本删除指定目录下超过指定时间的文件
- 根据字段状态删除指定目录文件的shell脚本
- LinuxShell-检查指定目录是否存在shell脚本文件
- shell脚本查找指定目录下所有子目录中的同名文件
- Linux监控系统磁盘使用比例,当使用率达到指定比例,删除指定目录下的所有文件的shell脚本
- linux下遍历目录和文件,删除过期天数目录或文件shell脚本
- 编写一个SHELL脚本,可以获得指定目录下的所有文件及文件夹的大小。输出的样式与 ls -lh 命令相同。
- Shell脚本遍历目录并批量修改文件编码
- shell脚本查找指定目录下所有子目录中的同名文件
- shell脚本:将指定目录下的执行文件的结果写入指定文件中
- Shell脚本递归打印指定目录中所有目录文件
- shell脚本第二篇——将指定目录下大于200K的文件移动到/tmp下
- 在指定目录查找指定后缀文件的shell脚本代码
- shell脚本删除目录下的指定文件
- shell遍历目录下指定后缀名的文件
- linux、shell脚本实例一“查找一个文件或者目录 找到了提示 没找到则输出未找到”
- Shell脚本统计指定目录下子目录中的文件个数
- Shell脚本递归遍历目录所有文件