shell 获取某目录下的所有文件名并忽略文件夹,将输出的文件名拼接为一行

我现在已经有获取文件名的代码,代码在二楼贴出。
我现在的需求是:
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 将一列变成一行