当前位置: 技术问答>linux和unix
linux shell编程遇到的问题,如何实现文件名的分类
来源: 互联网 发布时间:2016-03-29
本文导语: 想写个脚本实现读取etc/下的文件名(不包括目录),并按照文件名的首字母存放到相应的txt文件中。例如:a.txt A.txt b.txt B.txt ... 但是,下面的脚本程序执行后生成的${letter}.txt中的内容居然都是一样的。不知道为...
想写个脚本实现读取etc/下的文件名(不包括目录),并按照文件名的首字母存放到相应的txt文件中。例如:a.txt A.txt b.txt B.txt ...
但是,下面的脚本程序执行后生成的${letter}.txt中的内容居然都是一样的。不知道为什么,
感觉问题可能出在第九行的红色部分。
请高手指教一下。谢过先。
1 #!/bin/bash
2
3 #get the file name#
4
5 find /etc -maxdepth 1 ! -type d | sort > tmp.txt
6
7 for letter in a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
8 do
9 awk -F/ '{if($3~/^[$letter]/) print $3 }' tmp.txt > ${letter}.txt
10 done
11
12 rm tmp.txt
13
14 exit 0
但是,下面的脚本程序执行后生成的${letter}.txt中的内容居然都是一样的。不知道为什么,
感觉问题可能出在第九行的红色部分。
请高手指教一下。谢过先。
1 #!/bin/bash
2
3 #get the file name#
4
5 find /etc -maxdepth 1 ! -type d | sort > tmp.txt
6
7 for letter in a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
8 do
9 awk -F/ '{if($3~/^[$letter]/) print $3 }' tmp.txt > ${letter}.txt
10 done
11
12 rm tmp.txt
13
14 exit 0
|
太复杂了,这样:
for f in *
do
echo $f >> ${f:0:1}.txt
done
没判断是否是目录,自己处理吧。
for f in *
do
echo $f >> ${f:0:1}.txt
done
没判断是否是目录,自己处理吧。
|
#!/bin/sh
find /etc -maxdepth 1 ! -type d |sort > tmp.txt
for letter in a b c d ; do
echo " = "$letter
awk -F/ '{
if( $3 ~ /^["'$letter'"]/ )
{
printf("the $3 = %s",$3);
}
}' tmp.txt > ${letter}.txt
echo " = "$letter
done
rm tmp.txt
exit 0