我现在已经有获取文件名的代码,代码在二楼贴出。
我现在的需求是:
1.我现在的代码会获取目录下的文件的名字和文件夹的名字,能不能忽略文件夹?
2.现在的输出是例如:
source=123
source=asd
这种形式,可不可以改为source=123,asd
这种形式的输出?
3.补充说明:我的FAIL是一个标识文件,如果他存在会让我进行后面的动作
急求,谢谢!
for file in $(find ./ -mtime +2);do
if [ "${file##*.}"x != "bak"x ];then
file_name=$(basename $file)
name=${file_name%%.*}
echo "source=$name" >> /home/kaiyi/test/FAIL
fi
done
用 if的 -f判断是否为正规文件;
shell中字符串可以直接拼接,然后echo在for循环外就可以了
如
name=hello
name=${name},world
echo $name
这时候就输出hello,world
你的for语句一样,在for之前定义一个变量
比如
file_name_arr=
for ...
if
fi
echo $file_name_arr
done
另外关于shell if的一些判断参数
–b 当file存在并且是块文件时返回真
-c 当file存在并且是字符文件时返回真
-d 当pathname存在并且是一个目录时返回真
-e 当pathname指定的文件或目录存在时返回真
-f 当file存在并且是正规文件时返回真
-g 当由pathname指定的文件或目录存在并且设置了SGID位时返回为真
-h 当file存在并且是符号链接文件时返回真,该选项在一些老系统上无效
-k 当由pathname指定的文件或目录存在并且设置了“粘滞”位时返回真
-p 当file存在并且是命令管道时返回为真
-r 当由pathname指定的文件或目录存在并且可读时返回为真
-s 当file存在文件大小大于0时返回真
-u 当由pathname指定的文件或目录存在并且设置了SUID位时返回真
-w 当由pathname指定的文件或目录存在并且可执行时返回真。一个目录为了它的内容被访问必然是可执行的。
-o 当由pathname指定的文件或目录存在并且被子当前进程的有效用户ID所指定的用户拥有时返回真。
UNIX Shell 里面比较字符写法:
-eq 等于
-ne 不等于
-gt 大于
-lt 小于
-le 小于等于
-ge 大于等于
-z 空串
= 两个字符相等
!= 两个字符不等
-n 非空串
如果有帮助希望结帖
这么复杂。。你for语句不要输出source= 再将一列变成一行即可
A=cat file
;echo $A 将一列变成一行